【发布时间】:2013-03-15 14:24:27
【问题描述】:
我已经创建了用户角色,但是我的应用程序没有发现我的帐户是管理员。它显示角色为管理员,但管理员也是 nil。
从 Rails 控制台:
2.0.0-p0 :001 > user = User.find(13)
User Load (17.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 13 LIMIT 1
=> #<User id: 13, admin: nil, role: "admin", roles_mask: nil>
2.0.0-p0 :002 > user.roles
=> []
2.0.0-p0 :003 > user.role?(:admin)
=> false
如果它理解用户角色是管理员,为什么不接受它作为管理员并给予帐户适当的权限?我需要解决这个问题,因为我试图只允许管理员修改所有配置文件,然后指定普通用户只能修改和访问他们自己的配置文件。
用户.rb:
class User < ActiveRecord::Base
has_secure_password
attr_accessible :password_confirmation, :about_me, :feet, :inches, :password, :birthday, :career, :children, :education, :email, :ethnicity, :gender, :height, :name, :password_digest, :politics, :religion, :sexuality, :user_drink, :user_smoke, :username, :zip_code
validates_uniqueness_of :email
validates_presence_of :password, :on => :create
before_create { generate_token(:auth_token) }
def send_password_reset
generate_token(:password_reset_token)
self.password_reset_sent_at = Time.zone.now
save!
UserMailer.password_reset(self).deliver
end
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
end
【问题讨论】:
-
user.roles返回[]是不是错了? -
是的,我不知道为什么它会返回一个括号。
-
一个用户会属于多个角色吗?
-
什么'user.role'返回? => 管理员 :)
-
那为什么还要担心角色掩码呢?如果您使用的是 cancan(我假设您是因为角色掩码代码直接来自 wiki),您可以通过创建
admin布尔属性并检查user.admin?或遵循 One role per user 推荐来定义您的能力.
标签: ruby-on-rails