2011-09-28 72 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?