habtm关联通常需要三个(或更多)方式关联。例如,具有角色的权限模型。
一个特定的功能区域有许多用户可以访问许多区域。
该区域的权限是通过角色(habtm)设置的
用户/角色关联也是habtm
权限(读,写,删除等)是对角色的苛刻。
使用rails / activerecord最好如何做到这一点?
答案 0 :(得分: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
答案 1 :(得分:1)
This question about rails and RBAC(基于角色的身份验证控件)有一堆有用的示例,它们提供了这个问题的答案,并提供了示例的示例。