在Rails中为具有不同属性角色的用户建模的最佳方法是什么?

时间:2011-05-28 22:32:36

标签: ruby-on-rails-3 model authlogic roles cancan

我是一个Rails noob,我希望有人可以帮助我解决这个问题。我有一个应用程序,其中有一个用户模型使用Authlogic进行身份验证,CanCan进行授权。有三个角色:消费者,业务和管理员。用户可以拥有任意数量的这些角色。

然而,企业还有其他属性,我需要对其进行建模,以便我可以添加每个都具有可能不同属性的角色。 Instinct告诉我,我需要一个单独的模型来表示每个角色的属性,即BusinessRoleProfile,ConsumerRoleProfile等,然后可能以编程方式混合一个模块,将适当的has_one引用添加到配置文件模型中。

这是处理单独属性的最佳方法吗?如果是这样,有人可以指导我根据用户的角色动态地包含那些mixin吗?

1 个答案:

答案 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

OLD ANSWER

看起来它可能会在CanCan 2.0中出现。

https://github.com/ryanb/cancan/issues/326