我正在尋找更新的has_many關系。從請求中接收到的資料可能有要創建的資料,一些資料可能需要更新為新值,并且一些資料可能不再在陣列中,但仍在需要洗掉的資料庫中。
從理論上講,您可以將它們全部洗掉并重新創建所有內容或遍歷每個陣列以查找差異,但是對此有更好/推薦的做法嗎?
uj5u.com熱心網友回復:
您可以accepts_nested_attributes_for為關聯模型定義如下:
class Library
has_many :books
accepts_nested_attributes_for :books
end
然后在需要更新關聯的 has_many 物件的任何地方,都可以將物件作為陣列傳遞。例子:
books = [
{ name: 'New book' },
{ id: 10, name: 'A new name' }
{ id: 11, _destroy: true }
]
假設您想為 library_object 實體執行此操作:
library_object.update(books_attributes: books)
這將創建一個名為New bookname 的新書物件,將 ID 為 10 的書物件的名稱更新為A new name并洗掉 ID 為 11 的書物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/505028.html
標籤:轨道上的红宝石 ruby-on-rails-6 有很多
下一篇:按列填充表格
