Ruby on rails 遗传模型的多态关系

Ruby on rails 遗传模型的多态关系,ruby-on-rails,inheritance,polymorphic-associations,Ruby On Rails,Inheritance,Polymorphic Associations,我在我的一项任务中使用了多态关系,继承了如下模型 Class Organization < ActiveRecord::Base end Class Company < Organization has_many :roles, as: :authorizable end Class User < ActiveRecord::Base has_many :roles, as: :authorizable end Class Role < ActiveReco

我在我的一项任务中使用了多态关系,继承了如下模型

Class Organization < ActiveRecord::Base
end

Class Company < Organization
  has_many :roles, as: :authorizable
end

Class User < ActiveRecord::Base
  has_many :roles, as: :authorizable
end

Class Role < ActiveRecord::Base
  belongs_to :authorizable, :polymorphic => true
end
它应该类似于“可授权类型”=“公司”


我做错了什么?

我不认为你做错了什么。代码似乎使用单表继承<代码>组织及其子类共享相同的数据库表,但通过
类型
列的值进行区分(对于
公司
而言,
类型
将是
公司

在具有单表继承的多态关系中,
可授权类型
将始终是父模型的名称(
“组织”


请参阅。

谢谢。请尝试在公司模型中设置
self.table\u name=“Company”
。但名称为“company”的表不存在。只有模型存在我认为当你使用继承的模型时会发生这种情况,你是如何添加公司角色的数据的?您通过硬代码将可授权的_类型属性写入“公司”?在我开始工作之前,它是硬编码的。
SELECT * FROM `roles` WHERE (`roles`.authorizable_id = 5 AND `roles`.authorizable_type = 'Organization')