如何验证最后一分钟未创建的最后一条记录?
型号:
class Posts < ActiveRecord::Base
validates :author_id, :presence => true
belongs_to :author
before_save :check_timestamp
def check_timestamp
IF last_record.created_at(<=1 minute) THEN
DO NOT SAVE RECORD
end
end
我已经有一段时间了,因为我已经选择了这个项目...不确定我是否可以做上面的事情。
*** LOCAL GEMS ***
activerecord (4.0.1, 3.2.9)
activerecord-deprecated_finders (1.0.3)
...
rails (4.0.1, 3.2.9)
railties (4.0.1, 3.2.9)
答案 0 :(得分:2)
class Posts < ActiveRecord::Base
validates :author_id, :presence => true
belongs_to :author
validate :check_timestamp
def check_timestamp
if Posts.last.created_at > 1.minute.ago
errors.add(:created_at, 'Something went wront')
end
end
end
答案 1 :(得分:0)
如果它是最新的记录,我不需要检查它是否是最后一条记录吗?那么为什么不检查所有记录的创建日期,看看是否有超过1分钟的限制,
class Posts < ActiveRecord::Base
belongs_to :author
validate :check_timestamp
validates :author_id, presence: true
def check_timestamp
if Posts.where('created_at > ?' 1.minute.ago).exist?
errors.add(:created_at, 'Something went wront')
end
end
end
我担心它可能会变慢但是当我用.last
方法对它进行测试时它会快得多,你可以把它自己检查一下。
当我想到它确实有用时,因为rails不会浪费时间将返回查询解析为Post
对象然后检查created_at
,数据库返回{{1} }或true
直接。