カスタムスコープまたは仮想スコープを使用して属性の一意性を検証するにはどうすればよいですか?仮想属性を使用することを考えましたが、データベースでaudit_yearをクエリしようとし続けます。この一意性の制約のためだけに、別のデータベース列を作成したくはありません。
各場所でスケジュールできる監査は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
仮想属性の試行では、正しいパスにたどり着かない可能性があります。Railsでこれを行う「正しい」方法は何でしょうか?