Rails 3を使用していますが、シソーラスのように機能するアプリケーションを作成したいと思います。多対多(HABTM)の関係を作成する方法に関するチュートリアルをいくつか読みましたが、1つの「アイテム」が他の多くのアイテムを持ち、それに属するようにモデルを構成する方法がわかりません。同義語。
私がやろうとしているのは、ブログの「関連する投稿」セクションに少し似ていると思います。バックエンドでは、各投稿に複数の「関連する投稿」が必要です。
Rails 3を使用していますが、シソーラスのように機能するアプリケーションを作成したいと思います。多対多(HABTM)の関係を作成する方法に関するチュートリアルをいくつか読みましたが、1つの「アイテム」が他の多くのアイテムを持ち、それに属するようにモデルを構成する方法がわかりません。同義語。
私がやろうとしているのは、ブログの「関連する投稿」セクションに少し似ていると思います。バックエンドでは、各投稿に複数の「関連する投稿」が必要です。
これは、関係を処理するために別のモデルが必要な多対多の関係と見なすことができます。
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 }