【发布时间】:2013-01-15 05:54:29
【问题描述】:
我正在做类似于这些 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
任何改进的想法将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 rails-activerecord