Mat*_*ish 1 ruby scope ruby-on-rails validates-uniqueness-of
我有一个Rails模型,该模型应该只允许每个用户每天保存/更新一次模型。我有一个回调来执行按用户和日期查找,然后添加到错误中,但这很丑陋,并且感觉很不合常规。我有典型的created_at / updated_at列(并且时间部分很重要/我需要保留它)。
所以我想我可以:
1)创建另一个模型属性,该属性仅仅是创建日期和作用域的日期(无效)
2)使用:scope属性,但以某种方式仅获取created_at的日期部分,例如validates_uniqueness_of:user,:scope =>:created_at.to_date(显然无效)
3)验证,除非=> Proc.new {| o | 与我现有的回调}匹配的Finder(毛收入)
http://ar.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M000086
其中不会有绝大多数,但我希望它是用SQL而不是Ruby完成的(出于明显的可伸缩性原因)。
有什么想法吗?有没有更好的办法?
我最终将conditions选项与一起使用validates_uniqueness_of,并将其传递给lambda,以将检查的记录限制为仅今天的记录。
class AttendanceRecord < ActiveRecord::Base
validates_uniqueness_of :user_id, conditions: { -> { where("DATE(created_at) = ?", Date.today) } }
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3856 次 |
| 最近记录: |