1

Rails 3を使用していますが、シソーラスのように機能するアプリケーションを作成したいと思います。多対多(HABTM)の関係を作成する方法に関するチュートリアルをいくつか読みましたが、1つの「アイテム」が他の多くのアイテムを持ち、それに属するようにモデルを構成する方法がわかりません。同義語。

私がやろうとしているのは、ブログの「関連する投稿」セクションに少し似ていると思います。バックエンドでは、各投稿に複数の「関連する投稿」が必要です。

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 に答える