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

因此,我们通过trip places 得到了一个包含许多地方的trip,并接受地方的嵌套属性。此外,地点的名称必须是唯一的。

我想拥有以下功能,但找不到优雅的解决方案:

假设我们创建了一个 trip T,有两个地方P1 = 'hawaii'P2 = 'costa rica'

如果我编辑行程并更改hawaiibora bora,它将修改Place.

问题是我想创建一个名为的新地点bora bora并修改 TripPlace 模型以使用新地点更新place_id

同样的事情会破坏,如果我破坏place表单中的 a ,我只想从 中删除引用TripPlace,而不是实际的Place

当然,创建功能应该是相似的,如果地点存在,只需创建 TripPlace 引用。

现在,我不认为 accept_nested_attributes_for 真的有帮助,但想不出一个好的解决方案

4

0 回答 0