0

Contactable을 통해 다른 모델과 연결된 Contacts이라는 모델이 있습니다.레일스 : "연락처"가 다형성 일 때 사용자의 총 연락처 수는 어떻게 계산합니까?

class Contact < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :contactable, polymorphic: true 
    validates :email, :presence => {:message => 'Email cannot be blank'} 

"Leadhooks"모델 중 하나 인 "Contacts"는 연락처를 사용하여 연결됩니다.

class Leadhook < ActiveRecord::Base 
    belongs_to :user 
    has_many :contacts, as: :contactable 

여기에 내 응용 프로그램의 분석 페이지에서

class User < ActiveRecord::Base 
    has_many :leadhooks 
    has_many :contacts, through: :contactable 

, 나는 사용자가 가지고있는 모든 연락처의 총 수를 표시하고 싶습니다 ... 내 사용자 모델입니다. 연락처가 사용자에게 직접 연관되지 않은 내가 @user.contacts.all 시도 contactable, 같은 다른 모델을 통해 연결되어 있기 때문에

그러나, 나는

액티브 :: HasManyThroughAssociationNotFoundError/수에서이 오류를 ... 있어요 연결을 찾을 수 없음 : 모델에서 연락 가능 사용자

Contact이 다른 모델을 통해 연결될 때 사용자의 총 연락처 수는 어떻게 계산합니까?

답변

1

귀하의 질문은 완전히 명확하지 않다 ... 게시물에 commentscontacts을 혼합하는 .. 그런데 @user.contacts.all

를 호출 할 수 있습니다.

has_many :contacts 

을하지만, 당신이 연결되는 user의 모든 contactables의 수를 원하는 경우 : 당신은 단순히 user.contacts을 실행할 수 있도록하려면

는, 당신은 당신 User 모델이 추가해야 contactable 이후

has_many :contactables, through: :contacts 

는 다형성 협회 : 그것의 contacts를 통해, 당신은 당신 User 모델에 다음을 추가해야 , 당신이 그렇게 같은 contactable_type를 지정하는 선택적수 있습니다 : 그와

has_many :contactables, 
     through: :contacts, 
     source: :contactable, 
     source_type: "SomeClassName" 

을, 당신은

+0

사용자 모델을 추가하고 연락처 중 하나가 질문과 연결되어있어 더 명확하게 나타납니다. – user2101461

+0

다음 코드 줄이 잘못되었습니다 :'has_many : contacts, through : : contactable''through' 옵션을 제거하십시오. – Humza

0

사용하면 사용자 모델에

has_many :contacts, :as => :contactable 

를 추가 했습니까? 이 경우

당신은

+0

user.contactables 질문을 편집하고 솔루션을 시도 할 수 있습니다. 오류는 발생하지 않았지만 새 연락처를 추가 한 후에도 0으로 계산됩니다. 내가 가진 내 사용자 모델에서 ... 'has_many : 통해 연락처 : contactable' 그리고 contactables 중 하나 인 "Leadhooks"모델에서, 나는이 ... has_many : 연락처, as : : contactable' – user2101461

+0

아, 알겠습니다. 죄송합니다. 귀하의 데이터 모델을 오해했습니다. 윙자의 대답이 당신을 더 끌어 올려야합니다. –