我正在尝试创建验证以确保每天发布一个帖子,从00:00开始24小时。怎么能在Rails中完成呢?
我做了以下操作,但我不确定将today
方法放在何处。更简单的替代品非常受欢迎。
def today
where(:created_at => (Time.now.beginning_of_day..Time.now))
end
然后我在文章模型中添加了验证:
validate :time_limit, :on => :create
并在同一模型中定义time_limit
,如下所示:
def time_limit
if user.articles.today.count >= 1
errors.add(:base, "Exceeds daily limit")
end
但是我一直在创建动作中遇到“无方法”错误。
undefined method `today'
我不确定在哪里放这种方法。
答案 0 :(得分:3)
你应该使用范围:
class Article
scope :today, -> { where(:created_at => (Time.now.beginning_of_day..Time.now.end_of_day)) }
end
http://apidock.com/rails/ActiveRecord/NamedScope/ClassMethods/scope
答案 1 :(得分:0)
该错误是因为today
是模型的实例方法,而不是范围。
您需要的是scope
:
scope :today, lambda{ where(:created_at => (Time.now.beginning_of_day..Time.now)) }