2010-03-30 6 views
0

User 많은 Fantasies을 가질 수 있다는 점에서 내 기본 관계를 잘 작동이 주위에 내 머리 ...레일 : 두 개의 동일한 모델에 대해 다중 "has_many through"?

class User < ActiveRecord::Base 
    has_many :fantasies, :through => :fantasizings 
    has_many :fantasizings, :dependent => :destroy 
end 

class Fantasy < ActiveRecord::Base 
    has_many :users, :through => :fantasizings 
    has_many :fantasizings, :dependent => :destroy 
end 

class Fantasizing < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :fantasy 
end 

를 ... 포장 할 수 없으며,하는 Fantasy을 할 수 ~ 많은 Users입니다.

그러나, 내가하는 UserFantasy보다는 "좋아"와 같이 이 (를 좋아하는 또 다른 관계를 추가 할 필요가 ... 페이스 북의 생각과 어떻게 당신이 할 수있는 벽 "처럼" "있다" - 포스트, 비록 그것이 당신에게 "속한"것은 아니지만 ... 사실, 페이스 북의 예는 거의 제가 목표로 삼고있는 것입니다.)

나는 다른 협회를 만들어야한다고 생각했지만, 나는 그것을 어떻게 사용할 지, 아니면 이것이 올바른 접근법인지 혼란 스럽다. 나는 다음과 같은 추가에 의해 시작 :

class Fantasy < ActiveRecord::Base 

    ... 

    has_many :users, :through => :approvals 
    has_many :approvals, :dependent => :destroy 
end 

class User < ActiveRecord::Base 

    ... 

    has_many :fantasies, :through => :approvals 
    has_many :approvals, :dependent => :destroy 
end 

class Approval < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :fantasy 
end 

...하지만 어떻게 차라리 Fantasizing을 통해보다 Approval을 통해 연결을 만들려면 어떻게해야합니까?

누군가가 나를 똑바로 설정할 수 있다면, 나는 많은 의무가있을 것입니다! 당신의 환상 테이블에서

has_many :approved_fantasies, :through => :fantasizings, :source => :fantasy, :conditions => "fantasizings.is_approved = 1" 

을 is_approved 부울 필드를 추가 :

답변

2

에서는 사용자 모델 추가에 다음 코드의 첫 번째 세트를 유지합니다.

+0

저를 부르지 만, 제가 여기서하고있는 일을 잘 모르겠습니다. 조금 더 설명해 주시면 이해할 수 있습니까? 감사! – neezer

+0

내가 게시 한 코드 행은 "has_many : fantasies, : through :> : fantasizings"와 똑같은 일을합니다. 단, fantasizings 테이블에서 is_approved 부울을 검사합니다. 그래서 User.fantasies는 모든 환상을 나열하고, User.approved_fantasies는 승인 된 모든 환상을 나열합니다. –

+0

그것으로 놀고 나는 그것의 요지를 가지고 있다고 생각해. 감사. – neezer

관련 문제