1

我正在使用 Rails 3,我想创建一个像同义词库一样工作的应用程序。我已经阅读了一些关于如何做拥有和属于多(HABTM)关系的教程,但我不确定如何配置我的模型,以便一个“项目”拥有并属于许多其他项目,即它的同义词。

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

4

1 回答 1

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 }
于 2011-06-20T15:14:55.463 回答