2012-03-13 7 views
4

私は1日に2回以上の投稿を制限し、1週間に5件以下の投稿を制限することを控えています。私はユーザーと投稿モデル/コントローラを持っています。RoR 3ユーザーを1日に2つの投稿に制限する

私はこれらの質問を見てきましたが、私が探しているものではありません。 20時44分13/03/2012 @

Rails 3.1 limit user created objects

How do I validate a time in Rails? Limiting a user to post once a day

エラーKandadaBoggu

からコード
NoMethodError in PostsController#create 

undefined method `beginnning_of_day' for 2012-03-13 20:36:11 +0000:Time 
+0

はRailsの3.1」のように見えますあなたの質問に完全に答えます。あなたが求めていることとは何が違うのですか? –

+1

あなたはすでに試したコードをいくつか共有できますか? –

+0

私はそれを試してみたところ、合計で5つの投稿しかできません。ちょうど合計ではなく、1日と1週間の投稿をどのように制限できますか? – Steve

答えて

16

でこれを試してみてください:

class User 
    has_many :posts do 

    def today 
     where(:created_at => (Time.zone.now.beginning_of_day..Time.zone.now)) 
    end 

    def this_week 
     where(:created_at => (Time.zone.now.beginning_of_week..Time.zone.now)) 
    end 
    end  
end 


class Post 
    belongs_to :user 

    validate :user_quota, :on => :create 

private 
    def user_quota 
    if user.posts.today.count >= 2 
    errors.add(:base, "Exceeds daily limit") 
    elsif user.posts.this_week.count >= 5 
    errors.add(:base, "Exceeds weekly limit") 
    end 
    end 

end 
+0

ありがとうKandadaBoggu。私はあなたのコードを追加し、レールサーバーを再起動し、今投稿時に上記のエラーが表示されます – Steve

+0

私の答えに誤字がありました。今すぐやってみて下さい。 –

+0

ありがとうKandadaBoggu、このエラーが発生しました "未定義のメソッド' Time for '2012-03-13 21:19:00 +0000:Time " – Steve

関連する問題