내 프로젝트에서 cedict 오픈 소스 중국어 영어 사전을 사용하고 있습니다. 다른 모델과 관계가없는 ActiveRecord 모델링 된 postgresql 데이터베이스에 넣었습니다.ActiveRecord에서 두 개의 사전 항목을 병합하려면 어떻게해야합니까?
DictionaryEntry.count(:id, :group => :simplified, :having => 'count(id) > 1')
을 실행하면 2141 개의 중복 항목이 표시됩니다. 단순화 된 문자는이 항목에서 동일하지만 정의가 다릅니다. 예를 들어
, 두 개의 항목이 放之四海而皆准
거기에있는 것을 알 수 있지만, 두 개의 서로 다른 정의를 가지고
irb(main):009:0> DictionaryEntry.find_all_by_simplified("放之四海而皆准")
DictionaryEntry Load (193.6ms) SELECT "dictionary_entries".* FROM "dictionary_entries" WHERE "dictionary_entries"."simplified" = '放之四海而皆准'
[
[0] #<DictionaryEntry:0x007feb8750f9e0> {
:id => 42164,
:traditional => "放之四海而皆准",
:simplified => "放之四海而皆准",
:pinyin => "fang4 zhi1 si4 hai3 er2 jie1 zhun3",
:definition => "appropriate to any place and any time -idiom; universally applicable/a panacea",
:created_at => Sat, 22 Dec 2012 03:07:44 UTC +00:00,
:updated_at => Sat, 22 Dec 2012 03:07:44 UTC +00:00
},
[1] #<DictionaryEntry:0x007feb8750f378> {
:id => 42165,
:traditional => "放之四海而皆準",
:simplified => "放之四海而皆准",
:pinyin => "fang4 zhi1 si4 hai3 er2 jie1 zhun3",
:definition => "applicable anywhere -idiom",
:created_at => Sat, 22 Dec 2012 03:07:44 UTC +00:00,
:updated_at => Sat, 22 Dec 2012 03:07:44 UTC +00:00
}
]
내가 DictionaryEntry.find_all_by_simplified("放之四海而皆准")
을 실행할 때와 객체를 반환하도록이 두 항목을 병합하고 싶습니다 삭제 된 개체의 정의는 /
과 같이 후 마지막에 추가 :
[
[0] #<DictionaryEntry:0x007feb8750f9e0> {
:id => 42164,
:traditional => "放之四海而皆准",
:simplified => "放之四海而皆准",
:pinyin => "fang4 zhi1 si4 hai3 er2 jie1 zhun3",
:definition => "appropriate to any place and any time -idiom; universally applicable/a panacea/applicable anywhere -idiom",
:created_at => Sat, 22 Dec 2012 03:07:44 UTC +00:00,
:updated_at => Sat, 22 Dec 2012 03:07:44 UTC +00:00
}
]
(나는 또한 그래 ... 흠 ... 아직 다른,하지 않도록하기 위해 발생하는 경우 병음을 병합 할 수 있습니다 I 엠 . ight 그렇게해야 할)