habtm协会通常需要三种(或更多)方式关联。例如一个包含角色的权限模型。有没有办法在rails/activerecord中有三种方式的habtm关联?
功能的特定区域有许多用户可以访问许多区域。
上的所述区域的权限是通过角色(HABTM)设置
用户/角色关联也HABTM
的权限(读,写,删除等)是朝向角色的habtm。
用rails/activerecord怎么做最好?
habtm协会通常需要三种(或更多)方式关联。例如一个包含角色的权限模型。有没有办法在rails/activerecord中有三种方式的habtm关联?
功能的特定区域有许多用户可以访问许多区域。
上的所述区域的权限是通过角色(HABTM)设置
用户/角色关联也HABTM
的权限(读,写,删除等)是朝向角色的habtm。
用rails/activerecord怎么做最好?
This question about rails and RBAC(基于角色的认证控制)有一堆有用的示例,它们提供了这个问题的答案以及示例的示例实现。
我不确定您是否仅使用基于角色的用户权限作为示例,或者如果这实际上是您的目标。
嵌套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
我不完全相信你是问这里。可能值得添加一些关于如何访问数据的示例代码。假设你所要求的是可能的,举一个你如何使用它的例子。 – Will 2010-05-10 19:02:58