2016-09-01 2 views
1

궁금한데, Ruby on Rails에서 한번에 여러 개체를 찾고 만들 수 있습니까? 다음과 같은레일 first_or_create 복수의 레코드

는 이것의 의미는 minimise number of queries에 뭔가를 할 필요가있다

class User 
end 

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

User.where(hash).first_or_create! 

(? 내가 그것을 RoR에 유효한 코드는 아니라고 알고 있지만 그냥 궁금가 같은 것을 할 수 있습니다) 무언가를 like

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

'hash.map {...} '의 문제점은 무엇입니까? –

+0

DB에 대한 쿼리가 너무 많습니다. – Elmor

+0

@ Зелёный :'map'은 여러 개의 쿼리를 발생시키고 OP는 * 쿼리의 수를 최소화하려고 시도합니다. * ... – spickermann

답변

2

는 당신이 시도 할 수 있음 귀하의 데이터베이스.

-1

이것은 Ruby에서 가능합니다. 다음 코드를 확인하십시오.

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

User.create(hash) 

두 명의 사용자가 해시에 추가 한 데이터를 기반으로 생성됩니다. 또한 사전의 키는 열 이름을 기반으로해야합니다. 이것은 단지 하나의 쿼리에 삽입합니다

create_user = [] 

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

User.import create_user 

: 컨트롤러에서 다음

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

: 당신의 gemfile에

추가 수입 보석 :

+0

나는 단순한 생성이 아니라 찾기 또는 생성에 대해 말하고 있습니다! – Elmor