2012-03-13 22 views
4

我正在尋找客戶,限制我的用戶每天發帖超過兩次,每週發帖量不超過5篇。我有一個用戶和帖子模型/控制器。RoR 3將用戶限制爲每天2帖子

我一直在看這些問題,但他們不是我正在尋找的。

Rails 3.1 limit user created objects

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

錯誤@ 20:44 13/03/2012從KandadaBoggu

NoMethodError in PostsController#create 

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

看起來像「的Rails 3.1限制用戶創建的對象「完美地回答你的問題。你在問什麼不同? – 2012-03-13 18:56:41

+1

你可以分享一些你已經試過的代碼嗎? – 2012-03-13 19:02:26

+0

我已經試過這個,它只讓我總共有5個帖子。我將如何限制每天和每週的帖子,而不是總數? – Steve 2012-03-13 19:03:00

回答

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。我已經添加了您的代碼並重新啓動了rails服務器,現在當我發佈時,我得到上面發佈的錯誤 – Steve 2012-03-13 20:43:23

+0

我的答案中有一個錯字。現在試試。 – 2012-03-13 21:02:21

+0

感謝KandadaBoggu,這次我得到這個錯誤「未定義的方法'時間'爲2012-03-13 21:19:00 +0000:時間」 – Steve 2012-03-13 21:20:10