我有一个名为Contacts
的模型,它通过Contactable
与其他模型相关联。
class Contact < ActiveRecord::Base
belongs_to :user
belongs_to :contactable, polymorphic: true
validates :email, :presence => {:message => 'Email cannot be blank'}
&#34; Leadhooks&#34;是其中一个模型&#34; Contacts&#34;与使用可联系人有关。
class Leadhook < ActiveRecord::Base
belongs_to :user
has_many :contacts, as: :contactable
这是我的用户模型......
class User < ActiveRecord::Base
has_many :leadhooks
has_many :contacts, through: :contactable
在我的应用的分析页面中,我想显示用户拥有的所有联系人的总数。
但是,由于联系人没有直接关联到用户,并且通过其他模型关联为contactable
,因此当我尝试@user.contacts.all
时,我收到了此错误...
ActiveRecord :: HasManyThroughAssociationNotFoundError at /找不到关联:可联系模型用户
如何计算用户通过其他模型关联每个Contact
时的联系人总数?
答案 0 :(得分:1)
你的问题并不完全清楚。
如果您只想运行user.contacts
,则需要将其添加到User
模型中:
has_many :contacts
但是,如果您想要通过其contactables
与user
连接的所有contacts
的计数,则需要将以下内容添加到User
} model:
has_many :contactables, through: :contacts
由于contactable
是多态关联,您可以可选指定contactable_type
,如下所示:
has_many :contactables,
through: :contacts,
source: :contactable,
source_type: "SomeClassName"
有了这个,你就可以user.contactables
答案 1 :(得分:0)
你添加了
has_many :contacts, :as => :contactable
到您的用户模型?
在这种情况下,您可以拨打@user.contacts.all
顺便说一句..你在帖子中混合comments
和contacts
......