我有很多方法可以获取有关当前用户的信息,例如:
current_user.is_admin?
current_user.is_student?
current_user.is_teacher?
这些方法需要评估current_user(has_many:accounts)是否具有相应角色的帐户(学生,管理员等)。
我可以在数据库中创建一些东西来巩固它,但这似乎是不必要的。
在登录时是否存在定义true或false的rails方式,然后能够在不查询的情况下引用?换句话说,def is_admin?将在user_session创建时定义为具有true / false值的常量。而且,我永远不必再次查询用户帐户以阻止他们是否是管理员。
答案 0 :(得分:1)
您可以使用会话存储
def role
session[:role] ||= 'student'
end
def is_admin?
role == 'admin'
end
但是它太小了,将它保存在数据库中不会受到伤害,而且无论如何你都有机会从数据库中检索大部分请求。
答案 1 :(得分:0)
Rails有一个答案。
进入session_store.rb初始化程序并更改默认值:
Rails.application.config.session_store :cookie_store, key: xxxx
到
Rails.application.config.session_store :active_record_store, key: xxx
然后,使用以下命令添加一个表来存储数据库中的会话数据:
rake db:sessions:create