class Trip
has_many :trip_places
has_many :places, through: :trip_places
accepts_nested_attributes_for :places
end
class Place
has_many :trip_places
has_many :trips, through: :trip_places
validates :name, uniqueness: true
end
class TripPlace
belongs_to :trip
belongs_to :place
end
したがって、旅行の場所を経由する多くの場所があり、場所のネストされた属性を受け入れる旅行を取得しました。また、場所は名前が一意でなければなりません。
ただし、次の機能が必要ですが、エレガントなソリューションが見つかりません。
T
2 つの場所P1 = 'hawaii'
とP2 = 'costa rica'
旅行を編集して に変更hawaii
するとbora bora
、 が変更されPlace
ます。
問題は、という名前の新しい場所を作成しbora bora
、TripPlace モデルを変更して新しい場所で更新したいということplace_id
です。
同じことが破棄されます。フォーム内の a を破棄する場合、実際place
の参照ではなく、参照のみを削除したいと思いますTripPlace
Place
そしてもちろん、作成機能は似ているはずです。場所が存在する場合は、TripPlace 参照を作成するだけです。
今のところ、accepts_nested_attributes_for が本当に役立つとは思いませんが、これに対する良い解決策は思いつきません