我是一个Rails noob,我希望有人可以帮助我解决这个问题。我有一个应用程序,其中有一个用户模型使用Authlogic进行身份验证,CanCan进行授权。有三个角色:消费者,业务和管理员。用户可以拥有任意数量的这些角色。
然而,企业还有其他属性,我需要对其进行建模,以便我可以添加每个都具有可能不同属性的角色。 Instinct告诉我,我需要一个单独的模型来表示每个角色的属性,即BusinessRoleProfile,ConsumerRoleProfile等,然后可能以编程方式混合一个模块,将适当的has_one引用添加到配置文件模型中。
这是处理单独属性的最佳方法吗?如果是这样,有人可以指导我根据用户的角色动态地包含那些mixin吗?
答案 0 :(得分:1)
做了一些更多的研究,这可能会对你有所帮助。 https://github.com/thefrontiergroup/scoped_attr_accessible
看起来你可以这样做:
class User < ActiveRecord::Base
# All attributes are accessible for the admin scope.
attr_accessible :all, :scope => :admin
# The default scope can only access a and b.
attr_accessible :a, :b
# Make both :c and :d accessible for owners and the default scope
attr_accessible :c, :d, :scope => [:owner, :default]
# Also, it works the same with attr_protected!
attr_protected :n, :scope => :default
end
看起来它可能会在CanCan 2.0中出现。