2017-04-11 6 views
0

Monogoid pluck은 포함 된 필드에 대해 중복 된 포함 된 결과 (중복 행이 염려되지 않음)를 반환합니다.monogid pluck은 포함/중첩 된 필드에 대해 중복 결과를 반환합니다.

예 : (사용자가 SomeModel에 대한 문서를 포함한다) 다음과 같은

SomeModel.where(condition).pluck(:region, "user.name", "user.lastname") 

Results: 
[["amr", 
    {"name" => "mark", "lastname" => "goodman"}, 
    {"name" => "mark", "lastname" => "goodman"}], 
["amr", 
    {"name" => "john", "lastname" => "cena"}, 
    {"name" => "john", "lastname" => "cena"}] 
] 

내가 기다리고 있었다 뭔가 : 내가 포함 된 문서에서 여러 필드를 쿼리하면 마찬가지로

[["amr", 
    {"name" => "mark"}, 
    {"lastname" => "goodman"}], 
["amr", 
    {"name" => "john"}, 
    {"lastname" => "cena"}] 
] 

는, 많은 것을 생성 중복 해시.

내가 여기서 잘못하고 있는지 확실하지 않습니다.

답변

0

내가 그런 경우 이유를 모르겠지만, 당신이 사용하여 원하는 결과를 얻을 수 있습니다 map 대신 pluck의 :

[ 
    ["amr", "mark", "goodman"], 
    ["amr", "john", "cena"] 
] 

또는 :

SomeModel.where(condition).map { |m| [m.region, m.user.name, m.user.lastname] } 

이이 결과를 당신에게 제공해야합니다 :

SomeModel.where(condition).map do |m| 
    [m.region, { 'name' => m.user.name }, { 'lastname' => m.user.lastname }] 
end 

결과를 알려주세요 :

[ 
    ["amr", { "name" => "mark" }, { "lastname" => "goodman" }], 
    ["amr", { "name" => "john" }, { "lastname" => "cena" }] 
]