これには多くの問題があり、私が SQL で目撃したものとは異なります。HABTM 関係を作成し、オブジェクトを互いに一致させようとしているだけです。
私の 2 つのモデル
class Word
include MongoMapper::Document
many :topics
key :word, String
end
class Topic
include MongoMapper::Document
many :words
key :name, String
end
そのモデルの作業だけで、オブジェクトを作成して関連付けることができます。Mongo が好きな理由の一部です。
次に、次のようにいくつかのサンプル yaml を取得しようとします。
Music I Dig:
reggae:
bob marley
isaac hayes
groundation
classical:
philip glass
bach
そして、この Rakefile でそれを解析しようとしています:
File.open(Rails.root + 'lib/words/disgusting_glass_full_of.yml', 'r') do |file|
YAML::load(file).each do |topic, word_types|
puts "Adding #{topic}.."
@temp_topic = Topic.create name: topic
@temp_words = word_types.map { |type, words|
words.split(' ').map{ |word|
@word = Word.create type: type, word: word
@word.topics << @temp_topic
}
}
@temp_topic.words << @temp_words.flatten
end
end
冗談ではありません。これは私が今まで見た中で最もランダムでぎこちない出力です。2 空でデータのない実際のトピックが作成される量。一部のトピックには関連付けがあり、一部は完了しています。言葉も同じ。いくつかの単語はランダムに関連付けられ、他の単語は関連付けられません。この結果がどのように導き出されたかについては、まったく関係がありません。
問題は、モデルのセットアップ方法にあると思います (多分?)。そうでない場合は、mongo_mapper をスローして Mongoid を試しています。