2011-09-28 78 views
1

加入我有以下连接表和(相关模型和表格)Rails的嵌套条件

  • roles_users:USER_ID,ROLE_ID
  • permissions_roles:ROLE_ID,permission_id,OBJECT_ID,OBJECT_TYPE

对于给定的用户,权限和对象,我想要查找用户是否通过其角色具有对象的关联权限。

任何有关查询的帮助将不胜感激。

回答

0

试试这个:

class User 

    def has_permission?(permission, object) 
    RoleUser.joins(:permission_roles).where(
     :roles_users  => { 
     :user_id  => id 
     }, 
     :permission_roles => { 
     :permission_id => permission, 
     :object_type => object.class.base_class.name, 
     :object_id  => object 
     } 
    ).exists? 
    end 
end 

现在你可以检查的权限如下:

current_user.has_permission?(@edit_permission, @blog_post) 
1

给你有用户与目标,这个怎么样:

allowed = user.roles.joins(:permissions => :object).where(:object => { :id => object.id }).any?