我正在做类似于这些 railscast 剧集的事情:
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
任何改进的想法将不胜感激。