如何使用自定义或虚拟范围验证属性的唯一性?我想过使用虚拟属性,但它一直试图在数据库中查询 audit_year。我不想仅仅为了这个唯一性约束而创建另一个数据库列。
每个位置每年只能安排一次审核,因此我需要从预定属性中提取年份并验证该范围内的唯一性。
class Audit
attr_accessible :location_name, :scheduled_date, :completion_date ...
validates :location_name, :presence => true, :uniqueness => { :scope => :audit_year }
...
def audit_year
scheduled_date.year
end
end
我的虚拟属性尝试甚至可能不在正确的路径上。在 Rails 中执行此操作的“正确”方法是什么?