我如何每天验证一篇帖子?

时间:2013-07-21 19:51:37

标签: ruby-on-rails ruby cron

我正在尝试创建验证以确保每天发布一个帖子,从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'

我不确定在哪里放这种方法。

2 个答案:

答案 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)) }