1

我正在使用Rails 3,我想创建一个类似于同义词库的应用程序。我已经阅读了一些关于如何实现has-and-belong-to-many(HABTM)关系的教程,但是我不确定如何配置我的模型,使得一个“item”具有并且属于许多其他项目,即它的同义词。Rails 3中的词库3

我想我想要做的是有点像博客中的“相关帖子”部分,在后端每个帖子必须有几个“相关帖子”。

回答

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" 

然后你只需要做这样的事情来创建/显示器的话&同义词:

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 }