簡體   English   中英

使用 Rails 在同一個請求中創建、更新和刪除時,更新 has_many 關聯的最佳方法是什么?

[英]What is the best way to update a has_many association when creating, updating and removing in the same request using Rails?

我正在尋找更新has_many關系。 從請求中接收到的數據可能有要創建的數據,一些數據可能需要更新為新值,並且一些數據可能不再在數組中,但仍在需要刪除的數據庫中。

從理論上講,您可以將它們全部刪除並重新創建所有內容或遍歷每個數組以查找差異,但是對此有更好/推薦的做法嗎?

您可以為關聯的 model 定義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 book的新書 object ,將 ID 為 10 的書 object 的名稱更新為A new name ,並刪除 ID 為 11 的書 object。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM