用户可以有许多角色,但每个品牌只有一个角色。在Rails中可以使用这种方式建立3向关系吗?
Class User < AR::Base
has_and_belongs_to_many :roles, :join_table => "user_brand_roles"
has_and_belongs_to_many :brands, :join_table => "user_brand_roles"
end
这个设置的问题是,如何在同一时间检查品牌和角色?
或者我最好用BrandRole模型为每个品牌设置不同的角色,然后能够将用户分配到BrandRole?
类用户< AR ::基地 的has_many:user_brand_roles 的has_many:brand_roles,:通过=>:user_brand_roles 端
类BrandRole < AR ::基地 belongs_to的:品牌 belongs_to的:角色 端
Class UserBrandRole < AR :: Base belongs_to:brand_role belongs_to:用户 结束
这样我可以做一个找上了品牌,为用户:
br = current_user.brand_roles.where(:brand_id => @brand.id).includes(:brand_role)
if br.blank? or br.role != ADMIN
# reject access, redirect
end
这是一个新的应用程序,我试图从过去的错误中学习,并坚持Rails的方式。我在这里做出任何错误的假设或设计决定吗?
首先请描述你所要完成的,因为它听起来并不像您了解如何创建关联的东西。那么它会更容易帮助你:) – s84 2010-10-24 18:53:01
谢谢山姆。我理解Rails中的关系,但我认为我的困惑程度是在此之前的一步。我不知道我是否在问正确的问题。我试图设置一种情况,用户可以通过一定的权限访问站点的受保护区域。一家公司有几个品牌,每个品牌都包含多种产品。一些员工只需要看到品牌内的产品的一般信息,有些需要管理员级的访问权限。 – AKWF 2010-10-24 19:42:05