【发布时间】:2017-09-28 14:55:46
【问题描述】:
我想知道是否有更优雅的方式通过关系链接 has_many。在我的示例中,我有一个可以拥有多个角色的用户。每个角色都有多个权限。所以一个用户有多个权限。下面的代码工作正常,但我想知道是否有更好的方法来做到这一点。
class User < ActiveRecord::Base
has_many :role_user_mappings
has_many :roles, through: :role_user_mappings
def permissions
permitted_actions = []
self.roles.each do |role|
role.permissions.each do |permission|
permitted_actions << permission
end
end
permitted_actions
end
end
class Role < ActiveRecord::Base
has_many :permission_role_mappings
has_many :permissions, through: :permission_role_mappings
end
class Permission < ActiveRecord::Base
end
class PermissionRoleMapping < ActiveRecord::Base
belongs_to :permission
belongs_to :role
end
class RoleUserMapping < ActiveRecord::Base
belongs_to :user
belongs_to :role
end
我希望能够做到这一点。
user.permissions
编辑:尝试过 在我尝试过的事情上,至少 DRY 用户模型有点添加功能作为关注点
module Permittable
extend ActiveSupport::Concern
def permissions
permitted_actions = []
self.roles.each do |role|
role.permissions.each do |permission|
permitted_actions << permission
end
end
permitted_actions
end
end
【问题讨论】:
标签: ruby-on-rails activerecord has-many-through