ruby-on-rails 活动记录:保存多个对象时跳过验证

6ie5vjzr  于 2022-11-19  发布在  Ruby
关注(0)|答案(2)|浏览(127)

我知道我可以跳过对单个保存的验证,如下所示:

User.new(name: 'John').save(validate: false)

但是,当我一次保存多个对象时,该如何操作呢?例如:

Category.create([
  { name: 'Apps' },
  { name: 'Songs' },
  { name: 'Movies' }
])
2g32fytz

2g32fytz1#

我发现了这颗宝石:https://github.com/zdennis/activerecord-import
它的工作原理如下:

categories = [ 
  Category.new(name: 'Apps'),
  Category.new(name: 'Songs'),
  Category.new(name: 'Movies')
]

Category.import(categories, validate: false)

也可以使用普通数组代替ActiveRecord对象。
我猜当 validate 设置为false时,它会生成纯SQL,因此可以跳过验证。

8nuwlpux

8nuwlpux2#

对于create,你不能这样做。如果你真的必须跳过验证,你可以这样做:

[
  { name: 'Apps' },
  { name: 'Songs' },
  { name: 'Movies' }
].each do |attributes|
  c = Category.new(attributes)
  s.save(validate: false)
end

相关问题