Employee, Manager, Subordinate 예제로이 작업을 수행하는 방법에 대한 정보가 상당히 많이 있지만, 그렇지 않은 경우 온라인에서 다른 것을 찾을 수 없습니다.여러 개의 자체 조인 관계는 어떻게 만듭니 까?
Word 개체가 많은 반의어 또는 많은 동의어를 가질 수있는 모델 스키마를 만들려고합니다. 이러한 반의어와 동의어는 기본적으로 단어 개체입니다.
나는 다음 실행할 수 있도록하려면 :
word = Word.create(name:'good')
antonym = Word.create(name:'bad')
word.antonyms << antonym
synonym = Word.create(name:'right')
word.synonyms << synonym
word.antonyms # This gives you a resultset of all of the antonyms related to that word.
내 모델 : 당신은 Antonym
및 Synonym
클래스를 정의 할 필요가 없습니다
# The following doesn't work right now
class Word < ActiveRecord::Base
has_many :antonyms, :foreign_key => 'antonym_id', :class_name => 'Word'
has_many :synonyms, :foreign_key => 'synonym_id', :class_name => 'Word'
end
class Antonym < ActiveRecord::Base
belongs_to :word, :foreign_key => "word_id", :class_name => "Word"
end
class Synonym < ActiveRecord::Base
belongs_to :word, :foreign_key => "word_id", :class_name => "Word"
end
을 넣을 수 있지만 나를 포기 'unknown attribute : antonym_id' 오류. 모델에 antonym_id를 명시 적으로 추가해야합니까? – perseverance
@perseverance, 네가 필요합니다 ('synonym_id'와'antonym_id'). 그들은'words' 테이블의 컬럼이어야합니다 당신이 이미 기둥을 가지고 있었다는 인상 아래에 있었어. – vee
Currentl y Word 모델에는 단어, 정의 열이 있습니다. 이제 antonym_id 및 synonym_id를 추가 할 것입니다. 다른 열을 추가해야합니까? – perseverance