1
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

したがって、旅行の場所を経由する多くの場所があり、場所のネストされた属性を受け入れる旅行を取得しました。また、場所は名前が一意でなければなりません。

ただし、次の機能が必要ですが、エレガントなソリューションが見つかりません。

T2 つの場所P1 = 'hawaii'P2 = 'costa rica'

旅行を編集して に変更hawaiiするとbora bora、 が変更されPlaceます。

問題は、という名前の新しい場所を作成しbora bora、TripPlace モデルを変更して新しい場所で更新したいということplace_idです。

同じことが破棄されます。フォーム内の a を破棄する場合、実際placeの参照ではなく、参照のみを削除したいと思いますTripPlacePlace

そしてもちろん、作成機能は似ているはずです。場所が存在する場合は、TripPlace 参照を作成するだけです。

今のところ、accepts_nested_attributes_for が本当に役立つとは思いませんが、これに対する良い解決策は思いつきません

4

0 に答える 0