Тезаурус в Рельсах 3

Я использую 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 }
Другие вопросы по тегам