【发布时间】:2013-12-28 23:48:35
【问题描述】:
我正在执行批量插入,我自己跟踪唯一列以避免 m log n 插入成本。如果该方法有没有办法禁用代码中的验证?
【问题讨论】:
我正在执行批量插入,我自己跟踪唯一列以避免 m log n 插入成本。如果该方法有没有办法禁用代码中的验证?
【问题讨论】:
一种方法
new_car=Car.new(...)
new_car.save(validate: false)
其他使用方式
Model.skip_callback(:create)
删除并应用它
Model.set_callback(:create)
【讨论】:
::create! 引发验证错误。实际上我的问题是,如果我将config load_defaults 5.1 放入application.rb,那么由于验证错误,db 播种失败。如果没有这个调用,就不会出现验证错误。
我想你可能正在寻找update_column:http://apidock.com/rails/ActiveRecord/Persistence/update_column
或 Rails 4 update_columns: http://api.rubyonrails.org/v4.0.2/classes/ActiveRecord/Persistence.html#method-i-update_columns
以下是指南中有关跳过验证的一些信息:http://edgeguides.rubyonrails.org/active_record_validations.html#skipping-validations
或者您可以使用 update_all 一次更改多条记录上的同一列:http://apidock.com/rails/ActiveRecord/Relation/update_all,Rails 4 文档:http://api.rubyonrails.org/v4.0.2/classes/ActiveRecord/Relation.html#method-i-update_all
或者您可以使用execute(Rails 4 文档)执行原始 SQL:http://api.rubyonrails.org/v4.0.2/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-execute,这是一个关于这样做的 StackOverflow 问题:Rails raw SQL example,这是另一个问题:Rails 3, custom raw SQL insert statement
【讨论】: