Ruby on rails ActiveRecord有很多缺点,都是多态的

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

我有如下的关联设置,但是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
  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

请你也把这些表格的每一列都贴出来,只是为了额外的参考。不,那不行。我知道了,贴出答案。