カスタムスコープまたは仮想スコープで属性の一意性を検証するにはどうすればよいですか?私は仮想属性を使用することを考えましたが、データベースのaudit_yearを照会しようとしています。私はむしろ、この一意制約の目的のためだけに別のデータベース列を作成しません。仮想属性スコープでRailsモデル属性の一意性を検証する方法
各場所では1年に1回の監査しかスケジュールされていないため、スケジュールされた属性から年を抽出し、その範囲で一意性を検証する必要があります。
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
私の仮想属性の試行では正しいパスにさえいないかもしれません。レールでこれを行う「正しい」方法は何でしょうか?