2012-03-13 55 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