ActiveRecord로는 그렇게 할 방법이 없다고 생각합니다.
그러나, 여기에 내가 무엇을 할 것이라고이다 : 어떤 경우에, 기본 범위는 당신이 원하는 일이 아니기 때문에
people_ids = [1899, 7, 2, 3, 42]
people = Person.unscoped.find(people_ids)
people_ids.each_with_object(result = []) do |id, result|
result << people.detect { person.id == id }
end
result # => what you are looking for
내가 Person.unscoped를 사용합니다. 그래서 조금 더 빨라질 수도 있습니다.
find (people_ids)를 사용하면 people_ids의 크기에 상관없이 하나의 쿼리 만 생성됩니다. 최악은 다음과 같이 뭔가를하는 것입니다 :
people_ids.each_with_object(result = []) do |id, result|
result << Person.find(id)
end
는 모든 ID에 대한 쿼리를 생성하기 때문에.
가 완벽한 해답 ;-) 응답 DELBA에 대한
감사를해서 죄송하지, 나는 확실히 그 w 소용돌이를 줄 것이다, 입력 주셔서 감사합니다! –
고마워요, 대략 해결책이었습니다. 나는 그것을 조금 비틀었다. 그러나 나는 이것이 잘 작동했을 것이다라고 확신한다. –