我在我的一个任务中使用了多态关系,继承了像
这样的模型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
当我尝试抓取User.find(user_id).roles
时,它会给我正确的结果;但是,当我尝试像Company.find(company_id).roles
那样进行查询时,它会像查询
SELECT * FROM `roles` WHERE (`roles`.authorizable_id = 5 AND `roles`.authorizable_type = 'Organization')
它应该像'authorizable_type&#39; =&#39;公司&#39;
我做错了什么?
答案 0 :(得分:0)
我认为你做错了什么。代码似乎使用单表继承。 Organization
及其子类共享相同的数据库表,但由type
列的值区分(对于Company
,type
将为"Company"
)。
在与单表继承的多态关系中,authorizable_type
将始终是父模型的名称("Organization"
)。
请参阅here。