rails first_or_create用于多个记录

时间:2016-09-01 07:44:09

标签: ruby-on-rails ruby ruby-on-rails-4 hash

我想知道,是否可以在Ruby on Rails中一次查找或创建多个对象?

执行如下操作(我知道它不是RoR的有效代码,但只是想知道可以做这样的事情吗?)

class User 
end  

hash = [] 
hash << { name: 'Bob'}
hash << { name: 'Jim'}  

User.where(hash).first_or_create!

这意味着minimise number of queries需要做这样的事情

 hash.map {|u| User.where(u).first_or_create!}

2 个答案:

答案 0 :(得分:2)

可能你可以试试这个:

将gem gem添加到您的gemfile:

gem 'activerecord-import', '~> 0.10.0'

然后在你的控制器中:

create_user = [] 

create_user << {name: "Bob"}
create_user << {name: "jim"}

User.import create_user

这将只在您的数据库中插入一个查询。

答案 1 :(得分:-1)

这在Ruby中是可行的。请检查以下代码,

hash = [] 
hash << { name: 'Bob' }
hash << { name: 'Jim' }

User.create(hash)

将根据您在哈希中添加的数据创建两个用户。此外,字典的键应该基于列名。