我做類似這些railscast情節的東西:如何更新給定ID的列表中的所有車型布爾屬性?
http://railscasts.com/episodes/165-edit-multiple
http://railscasts.com/episodes/52-update-through-checkboxes
的問題是,那些只試圖修改選擇的車型。我需要更新每一個模型。
我發現的第一件事情是,id not in()
不給後面一切都像我的預期,所以我不得不做出對空列表的一個特例。
此代碼的工作,但它似乎並不很乾。至少我應該能夠將正常情況合併爲一行。
def update_published
if params[:book_ids].empty?
Book.update_all(published: false)
else
Book.where(id: params[:book_ids]).update_all(published: true)
Book.where("id not in (?)", params[:book_ids]).update_all(published: false)
end
redirect_to books_path
end
改進的任何想法,將不勝感激。
感謝。這絕對是在代碼方面的改進。我認爲你是對的,它會更快,因爲它不需要做兩次相同的搜索。不過,我有點擔心它會將大多數模型更新兩次。 – Geoff