【发布时间】:2018-03-01 08:15:47
【问题描述】:
我的多态关联有问题。
角色.rb
class Role < ActiveRecord::Base
belongs_to :resource, polymorphic: true
end
结构.rb
class Structure < ActiveRecord::Base
has_many :roles, as: :resource
end
association.rb
class Association < Structure
end
我有另一个名为 User 的模型,我在其中创建像 Rolify 一样的角色。
def add_role role_name, resource = nil
role = Role.find_or_create_by(name: role_name.to_s,
resource_type: (resource.is_a?(Class) ? resource.to_s : resource.class.name if resource),
resource_id: (resource.id if resource && !resource.is_a?(Class)))
if !roles.include?(role)
self.roles << role
self.save
end
role
end
因此,当我为具有关联的用户创建角色时,我有:
#<Role id: 2, name: "president", resource_id: 1, resource_type: "Association", created_at: "2018-02-28 23:04:20", updated_at: "2018-02-28 23:04:20">]
但是当我尝试从 Association 获取所有角色时,这是 SQL:
SELECT `roles`.* FROM `roles` WHERE `roles`.`resource_id` = 1 AND `roles`.`resource_type` = 'Structure'
【问题讨论】:
-
不清楚您的要求。请改写它并明确您要完成的工作。
标签: ruby-on-rails relationship