例如模型的所有數據,我們有:更新在軌
class PublicLibrary < ActiveRecord::Base
has_many :books
end
class Book < ActiveRecord::Base
belongs_to :public_library
end
如果我們想不更新PublicLibrary所有的書,我們可以添加到PublicLibrary模型
accepts_nested_attributes_for :books, :allow_destroy => true, :reject_if=>:all_blank
現在我們能做的像這樣的東西
library=PublicLibrary.find(ID)
library.update_attributes(:books_attributes=>{<bunch of books here>})
並且所有相關書籍將被更新,一些書籍將被刪除,一些新書籍將被刪除插入表格書
現在我有一些模型書,那沒有關係,與PublicLibrary:
class Book < ActiveRecord::Base
end
我有一個管理面板,顯示在一個大的大表中的所有書籍,希望更新/刪除/只需點擊插入新的書,所以我想是這樣
Book.bulk_update({...books...})
或者與子集的工作(做不知道是我真的需要它,但如果我們能做到這一點?爲什麼不來知道如何?)
books_to_update=Book.where(...).bulk_update({...books...})
當然書可能有一些嵌套模型。
你有什麼想法嗎? P.S.目前,我只有有一些家長的想法,併爲它做更新...
不幸的是,ActiveRecord不能做所有事情,雖然我可能是錯的,但我不認爲你「重新要求是可能的。我自己對AR的抱怨使得使用多形態+ STI工作變得困難,所以我知道你的感受! 但是,編寫一些迭代遍歷散列並適當創建/更新/銷燬的代碼應該不會太困難。你可以把它變成一個擴展了ActiveRecord功能的gem。 – JamesDS