0
不工作我得帶的has_many協會的模式:設置爲on_replace選項:刪除。而且我已經有了一組複選框來提交新的值作爲關聯到父實體。我想在編輯要刪除所有以前設置的關聯,而是我得到新的關聯插入到數據庫中,老依然在數據庫中持久。外生的:on_replace:刪除選項的has_many協會
的變更提交後,只有沒有ID在它的變化新的關聯,就像這樣:
%{materials: [#Ecto.Changeset<action: :insert,
changes: %{material: "Cast iron"}, errors: [],
data: #HrPro.Entities.Material<>, valid?: true>,
#Ecto.Changeset<action: :insert,
changes: %{material: "Steel"}, errors: [],
data: #HrPro.Entities.Material<>, valid?: true>]}
正如你可以看到有沒有:在變更ID字段,因此我預計,先前保存的材料將從數據庫中刪除,但事實並非如此。
的模式是這樣的:
schema "entities" do
has_many :materials, Material, on_replace: :delete
end
def changeset(%Entity{} = entity, attrs \\ %{}) do
entity
|> cast(attrs, @allowed_fields)
|> cast_assoc(:materials)
end
我安裝的是:
phoenix 1.3
ecto 2.2.6
我們能否外生從上編輯數據庫清除所有先前提交的相關值?