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
因此,我们通过trip places 得到了一个包含许多地方的trip,并接受地方的嵌套属性。此外,地点的名称必须是唯一的。
我想拥有以下功能,但找不到优雅的解决方案:
假设我们创建了一个 trip T
,有两个地方P1 = 'hawaii'
和P2 = 'costa rica'
如果我编辑行程并更改hawaii
为bora bora
,它将修改Place
.
问题是我想创建一个名为的新地点bora bora
并修改 TripPlace 模型以使用新地点更新place_id
。
同样的事情会破坏,如果我破坏place
表单中的 a ,我只想从 中删除引用TripPlace
,而不是实际的Place
当然,创建功能应该是相似的,如果地点存在,只需创建 TripPlace 引用。
现在,我不认为 accept_nested_attributes_for 真的有帮助,但想不出一个好的解决方案