ruby-on-rails - 更新 rails 中模型的所有数据

标签 ruby-on-rails activerecord nested-attributes

例如我们有:

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>})

所有相关书籍都会更新,一些书籍会被删除,一些新书会插入到表格书籍中

现在我有一些模型书,与公共(public)图书馆没有关系:

class Book  < ActiveRecord::Base
end

我有一个管理面板,在一个大表中显示所有书籍,并且想通过单击更新/删除/插入新书,所以我想要类似的东西

Book.bulk_update({...books...}) 

或者使用子集(不确定我是否真的需要它,但如果我们能做到......为什么不知道如何做?)

books_to_update=Book.where(...).bulk_update({...books...})

当然 Book 可能有一些嵌套模型。

你有什么想法吗? 附言目前我只知道有一些 parent 并为它做更新......

最佳答案

您的 {...books...} 散列中包含您想要的多本书

books.each { |id, book| Book.find(id).update_attributes(book) }

或者你想做一个真正的批量更新(意味着对所有正在运行的书进行相同的更新) 那么你可以使用 http://apidock.com/rails/ActiveRecord/Relation/update_all

关于ruby-on-rails - 更新 rails 中模型的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6661121/

相关文章:

ruby-on-rails - 未初始化的常量 ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError)

ruby-on-rails - ActiveRecord 究竟如何期望日期被格式化

ruby-on-rails - 未为 accepts_nested_attributes_for 触发观察者和回调

ruby-on-rails - 复数 for fields_for has_many 关联未显示在 View 中

ruby-on-rails - 如何在 before_update 回调中为 activerecord 嵌套属性处理新子级

ruby-on-rails - Rails 3.1 pre 迁移问题

ruby-on-rails - Ruby:在转换数组中的对象后传递键/值

ruby-on-rails - 局部变量、实例变量、全局变量和类变量有什么区别?

ruby-on-rails - 自动更改 post Rails 的状态

ruby-on-rails - 如何从两个不同的外键访问模型?