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')