我知道我可以跳过验证对单个保存,这样跳过验证:ActiveRecord的:当保存多个对象
User.new(name: 'John').save(validate: false)
但我怎么能这样做,在一次保存多个对象时?像这样:
Category.create([
{ name: 'Apps' },
{ name: 'Songs' },
{ name: 'Movies' }
])
我知道我可以跳过验证对单个保存,这样跳过验证:ActiveRecord的:当保存多个对象
User.new(name: 'John').save(validate: false)
但我怎么能这样做,在一次保存多个对象时?像这样:
Category.create([
{ name: 'Apps' },
{ name: 'Songs' },
{ name: 'Movies' }
])
我发现这个宝石:https://github.com/zdennis/activerecord-import
它的工作原理是这样的:
categories = [
Category.new(name: 'Apps'),
Category.new(name: 'Songs'),
Category.new(name: 'Movies')
]
Category.import(categories, validate: false)
It is also possible to use plain arrays instead of ActiveRecord objects.
我想这生成纯SQL时验证设置为false,因此它可以跳过验证。
你不能这样做与create
。如果你真的必须跳过验证,你可以做这样的事情:
[
{ name: 'Apps' },
{ name: 'Songs' },
{ name: 'Movies' }
].each do |attributes|
c = Category.new(attributes)
s.save(validate: false)
end
谢谢你指出这个选择。不过,我需要保存一些长数据集,这种方式会产生很多SQL插入。 [activerecord-import](https://github.com/zdennis/activerecord-import)gem最适合我,因为它会生成一个插入。 –