Ruby on rails ActiveRecord有很多缺点,都是多态的
我有如下的关联设置,但是Rails抛出了错误/异常,告诉我没有正确设置关联 以下是我所拥有的:Ruby on rails ActiveRecord有很多缺点,都是多态的,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有如下的关联设置,但是Rails抛出了错误/异常,告诉我没有正确设置关联 以下是我所拥有的: class Case has_many :case_accesses, as: :policy, inverse_of: :case, dependent: :destroy has_many :agents, through: :case_accesses, source: :ownable, source_type: 'Agent' end class CaseAccess bel
class Case
has_many :case_accesses, as: :policy, inverse_of: :case, dependent: :destroy
has_many :agents, through: :case_accesses, source: :ownable, source_type: 'Agent'
end
class CaseAccess
belongs_to :policy, polymorphic: true
belongs_to :ownable, polymorphic: true
end
class Agent
has_many :case_accesses, as: :ownable, dependent: :destroy
has_many :cases, through: :case_accesses
end
来自Rails的错误:
在模型CaseAccess中找不到源关联“案例”或:案例。尝试“has_many:cases,:through=>:case_访问,:source=>”。它是策略、连接还是可拥有
我尝试将源设置为ownable,但这在我的查询中造成了问题。我应该如何建立这个协会?这是一个传统的方法,除了一方面,策略
可以是类型案例
或Ppae
,并且可拥有的
可以是类型代理
或用户
表的列:
Case
-id
CaseAccess
-id
-policy_id
-policy_type
-ownable_id
-ownable_type
Agent
-id
一个案例有许多案例访问作为策略。CaseAccess是策略还是CaseAccess的策略 我相信你需要改变
有很多:case\u访问,as::policy,reverse\u of::case,dependent::destroy
到
有很多:case\u访问、reverse\u of::policy、dependent::destroy
这就是它所做的:
class Case
has_many :case_accesses, as: :policy, inverse_of: :policy, dependent: :destroy
has_many :agents, through: :case_accesses, source: :ownable, source_type: 'Agent'
has_many :users, through: :case_accesses, source: :ownable, source_type: 'User'
end
class CaseAccess
belongs_to :policy, polymorphic: true
belongs_to :ownable, polymorphic: true
end
class Agent
has_many :case_accesses, as: :ownable, dependent: :destroy
has_many :cases, through: :case_accesses, source: :policy, source_type: 'Case'
end
请你也把这些表格的每一列都贴出来,只是为了额外的参考。不,那不行。我知道了,贴出答案。