これが私の問題の例です。
「部屋」モデルがあります:
class Room < ActiveRecord::Base
has_many :items, :inverse_of => :room
accepts_nested_attributes_for :items
end
そして、私は「アイテム」モデルを持っています:
class Item < ActiveRecord::Base
belongs_to :room, :inverse_of => :items
validates :some_attr, :uniqueness => { :scope => :room}
end
特定の部屋に属するすべてのアイテムの :some_attr 属性の一意性を検証したい。
アイテムを検証しようとすると、次のエラーが発生します。
TypeError (Cannot visit Room)
検証の範囲を :room_id に設定することはできません。アイテムがまだ保存されていないため、id が nil だからです。また、「ルーム」モデルでカスタム バリデータを使用しないようにしたいと考えています。
Railsでそれを行うクリーンな方法はありますか? :inverse_of オプションを正しく設定したかどうかも疑問です...