[RUBY-ON-RAILS] 많은 자기에 많은 참여 레일
RUBY-ON-RAILS많은 자기에 많은 참여 레일
수 올바른 방향으로 어떤 하나의 포인트 나 :
나는 레일에 대한 모델을 구축하려고 그 다음 구축 :
를 ClassA -id
를 ClassA 많은 "를 ClassA"에 관계가 (그 자체로 참조하므로)
나는 마이그레이션 및 모델을 찾고 있어요.
나는 모르겠 올바른 테이블이 조인 것을 (나는 그것의 간단한 2 열 테이블 ClassA_id, ClassARel_ID 생각 ->를 ClassA에게 모두 포인트) 방법과 모델을 구축하는 방법
감사!
해결법
-
==============================
1.내가 좋아하는 뭔가를 사용하십시오
내가 좋아하는 뭔가를 사용하십시오
class Person < ActiveRecord::Base has_many :friendships, :foreign_key => "person_id", :class_name => "Friendship" has_many :friends, :through => :friendships end class Friendship < ActiveRecord::Base belongs_to :person, :foreign_key => "person_id", :class_name => "Person" belongs_to :friend, :foreign_key => "friend_id", :class_name => "Person" end
그리고 테이블은 같은 것
people: id; name; whatever-you-need friendships: id; person_id; friend_id
-
==============================
2.이 두 가지를 결합하는 또 다른 클래스를 생성하기 위해 너무 많은 이해가되지 않는 경우, 다른 방법이 될 수있다 :
이 두 가지를 결합하는 또 다른 클래스를 생성하기 위해 너무 많은 이해가되지 않는 경우, 다른 방법이 될 수있다 :
class Word < ActiveRecord::Base has_and_belongs_to_many :synonyms, class_name: "Word", join_table: "word_synonyms", association_foreign_key: "synonym_id" end
테이블이 같을 것이다 가입 :
create_table :word_synonyms do |t| t.integer :word_id t.integer :synonym_id end
-
==============================
3.이 포스팅은 좋은 작업 예제가 있습니다 : http://blog.hasmanythrough.com/2007/10/30/self-referential-has-many-through
이 포스팅은 좋은 작업 예제가 있습니다 : http://blog.hasmanythrough.com/2007/10/30/self-referential-has-many-through
뿐만 아니라 여기에 관련된 질문이 있습니다 : 자기 참조 has_many에 문제가 : 레일에 협회를 통해
-
==============================
4.불행히도의 휘슬러 대답은 많은 경우에 적합하지 않을 수 있습니다. 예를 들어,이 두 가지를 작동하지 않습니다. 예를 들어, 새로운 단어를 만들 가정 :
불행히도의 휘슬러 대답은 많은 경우에 적합하지 않을 수 있습니다. 예를 들어,이 두 가지를 작동하지 않습니다. 예를 들어, 새로운 단어를 만들 가정 :
word = Word.create(:word_name => 'tremble') ['shake', 'vibrate'].each { |syn| word.synonyms.create(:word_name => syn) }
이제, 당신이 할 경우 :
word = Word.find_by_word_name('tremble') p word.synonyms # this would print out the Words with the word_name 'shake' and 'vibrate'.
하나, 당신은 그것을 다른 방법으로 주위를 한 경우 :
word = Word.find_by_word_name('vibrate') p word.synonyms # this would print an empty association.
이 단어 '진동은'NO 동의어를 가지고 말하고있다.
그러니까 기본적으로,이 방법은 (즉 진동이 떨게의 동의어이며, 떨게은 진동의 동의어이다) 두 가지를 작동하지 않습니다
편집 : 어떤 의미에서, 당신은 그러나 당신이 명시 적으로 각 단어의 동의어를 할당해야 할 것입니다,이 방법을 사용할 수 있습니다. 당신이 ( '진동'과 '흔들림'이다) 떨게의 동의어를 지정 그래서 있지만, 당신은 여전히에있는 '흔들림'의 동의어를 지정합니다 ( '어느입니다'떨림 '과'진동 ')와'진동 '(이다' 뿐만 아니라 '및 쉐이크')를 떨다.
from https://stackoverflow.com/questions/3396831/rails-many-to-many-self-join by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 레일에서 시험하기위한 기본 "www.example.com"도메인을 변경하려면 어떻게해야합니까? (0) | 2020.02.19 |
---|---|
[RUBY-ON-RAILS] has_many와 counter_cache : 통해 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 어떻게 레일에 date_select 또는 select_date에서 날짜를 얻으려면? (0) | 2020.02.19 |
[RUBY-ON-RAILS] 말대꾸 :: 구문 에러 : 수입에 파일이 없거나 읽을 수 : 부트 스트랩 - 스프로킷 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 어디 레일에서 글로벌 변수를 넣어 3 (0) | 2020.02.19 |