RoR 3将用户限制为每天2个帖子

Ste*_*eve 5 time ruby-on-rails limit

我正在寻找限制我的用户每天发布超过两次,每周不超过5个帖子.我有一个用户和帖子模型/控制器.

我一直在看这些问题,但它们并不是我想要的.

Rails 3.1限制用户创建的对象

如何在Rails中验证时间?限制用户每天发布一次

错误@ 20:44 13/03/2012,来自KandadaBoggu的代码

NoMethodError in PostsController#create

undefined method `beginnning_of_day' for 2012-03-13 20:36:11 +0000:Time
Run Code Online (Sandbox Code Playgroud)

Har*_*tty 18

试试这个:

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
Run Code Online (Sandbox Code Playgroud)

  • 虽然我修正了错字,但我引入了一个复制+粘贴错误.代码现在应该工作.PS:您应该能够自己解决这些简单的语法错误. (2认同)