사진 사이트가 있다고 가정 해 보겠습니다. 모든 작성자는 다른 작성자로부터 업데이트를 받기 위해 구독 할 수 있습니다. 제작자 A가 B가 A에 가입되어 의미하지 않는다 저자 B에 가입 분명히한다면 우리는 우리가Rails에서 "양면"다 대다 관계를 만드는 방법은 무엇입니까?
- some_author.subscribed_by_author를 사용할 수있는 모델
class Author < ActiveRecord::Base has_many :subscriptions has_many :subscribed_by_author, :through => :subscriptions, :source => :subscribed_to end class Subscription < ActiveRecord::Base belongs_to :author belongs_to :subscribed_to, :class_name => "Author", :foreign_key => "subscribed_to" end
이 방법을 구축 - 목록을 some_author이 구독하는 저자의 (일반 SQL을 사용하지 않는) 우리 둘 (누구에 가입) 끝
하지만 문제는 레일을 사용하여 일부 저자에 가입 한 사람들의 목록을 받으시는 방법을 알 수있는 가입에 대한
질문 : 레일스에서 관계가 양립 할 수있는 능력이 있습니까? 즉, some_author.subscribed_BY_author
을 쓰고 있지만 some_author_subscribed_TO_author
을 쓰는 것입니까? 하나 있다면, 그것은 무엇입니까?
P. subscribed_BY_author :
- 변경 데이터베이스 설계하는 것입니다 "방향은"가입이
- 저자 모델
has_many에 추가 생성 될 때마다 기록 : through => : subscriptions, : source => : subscribed_to, : conditions => "by direction"by
has_many : subscribed_TO_author : : through :> : 구독 : 소스 :> 구독하기 : : condit ion => "direction = 'to' '"
그러나 데이터베이스 설계를 변경하지 않고도 해결책이 있는지 궁금합니다.
불행히도 그렇지 않았습니다.하지만 그것은 올바른 방향과 다음 코드가 작동했습니다. #Author model has_many : subscriptions_to, : class_name => "Subscription", : foreign_key => "subscribed_to" has_many : subscribed_to_author, : through :> : subscriptions_to, : source => : 작성자 나는이 대답을 받아 들인다. 그러나 먼저 정확한 것으로 편집해야한다. 고마워! –
항상 내 승무원을 고치는 것은 나의 큰 즐거움이다 :) – klew