2016-06-30 3 views
0

나는 MYDB에서 모델 제 그룹 별 및 필터 레일은

+----+------------------------+ 
| id | keywords    | 
+----+------------------------+ 
| 83 | automotive, pet, heath | 
| 82 | car, plane    | 
| 81 | NULL     | 
| 80 | pet, car    | 
| 78 | Null     | 
+----+------------------------+ 

나는 t이 결과를 얻을 원하는을 가지고 같은 :

{ 
"automotive" => [82], 
"pet" => [82,80], 
"heath" => [83], 
"plane" => [82], 
"car" => "80" 
} 

어떻게 내가 위의 데이터로 결과 동일합니까? 기본적으로

+0

키워드 다른 테이블의 해당 배열에 삽입 기술 자료를 보관? – oreoluwa

+0

스키마를 변경할 수 있습니까? CSV-in-a-column은 약간의 안티 패턴입니다. –

+0

아니요, @ololuwa 문자열입니다. –

답변

0

는 해시의 키로서 키워드를 설정하고

summary = Hash.new() 
Article.all.each do |a| 
    if a.keywords 
    # assuming your keywords is stored as a string 
    a.keywords.split(", ").each do |keyword| 
     if summary[keyword].empty? 
     summary[keyword] = [a.id] 
     else 
     summary[keyword].push(a.id) 
     end 
    end 
    end 
end