我正在使用Rails 3,我想创建一个像叙词表一样工作的应用程序。我已经阅读了一些有关如何进行多次拥有(HABTM)关系的教程,但我不确定如何配置我的模型,使得一个“项目”具有并属于许多其他项目,即同义词。
我想我想要做的有点像博客中的“相关帖子”部分,在后端每个帖子必须有几个“相关帖子”。
答案 0 :(得分:2)
我认为这是一个多对多的关系,你需要一个单独的模型来处理这种关系。
class Word < ActiveRecord::Base
has_many :source_words, :class_name=>"WordLink", :foreign_key=>:source_word_id
has_many :linked_words, :class_name=>"WordLink", :foreign_key=>:linked_word_id
class WordLink < ActiveRecord::Base
belongs_to :source_word, :class_name=>"Word"
belongs_to :linked_word, :class_name=>"word"
然后你只需要做这样的事情来创建/显示单词&amp;同义词:
w = Word.create(:word_name=>"Cold")
w.source_words.create(:linked_word=>Word.create(:word_name=>"Icy"))
synonyms_as_text_array = w.source_words.collect {|s| s.linked_word.word_name }