我知道我可以跳過驗證對單個保存,這樣跳過驗證: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最適合我,因爲它會生成一個插入。 –