2010-05-10 29 views
0

habtm协会通常需要三种(或更多)方式关联。例如一个包含角色的权限模型。有没有办法在rails/activerecord中有三种方式的habtm关联?

功能的特定区域有许多用户可以访问许多区域。

上的所述区域的权限是通过角色(HABTM)设置

用户/角色关联也HABTM

的权限(读,写,删除等)是朝向角色的habtm。

用rails/activerecord怎么做最好?

+0

我不完全相信你是问这里。可能值得添加一些关于如何访问数据的示例代码。假设你所要求的是可能的,举一个你如何使用它的例子。 – Will 2010-05-10 19:02:58

回答

2

我不确定您是否仅使用基于角色的用户权限作为示例,或者如果这实际上是您的目标。

嵌套habtm关系很容易在Rails的,虽然我会强烈建议嵌套has_many :through,刚刚成立起来,你会想象:

class Permission < ActiveRecord::Base 
end 

#this table must have permission_id and role_id 
class PermissionAssignment < ActiveRecord::Base 
    belongs_to :permission 
    belongs_to :role 
end 

class Role < ActiveRecord::Base 
    has_many :users, :through => :role_assignments 
    has_many :permissions, :through => :permission_assignments 
end 

#this table must have user_id and role_id  
class RoleAssignment < ActiveRecord::Base 
    belongs_to :role 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :roles, :through => :role_assignments 
end 
相关问题