【发布时间】:2015-09-16 00:21:25
【问题描述】:
假设我有一个用户模型
user.rb
class User < ActiveRecord::Base
...
end
具有如下属性:名称、用户名、访问权限
access 是一个枚举,它告诉我用户是“员工”还是“客户”
要获取登录用户的姓名和用户名,我可以这样做:
current_user.name
current_user.username
假设我有一个 Staff 模型
staff.rb
class Staff < ActiveRecord::Base
belongs_to :user
end
具有如下属性:薪水、电话号码
我还有一个客户模型
customer.rb
class Customer < ActiveRecord::Base
belongs_to :user
end
具有如下属性:地址、电话号码
我希望能够在我员工的控制器上调用它:
current_user.staff.salary
这在我客户的控制器上:
current_user.customer.address
到目前为止我做了什么
我覆盖了 session_controller.rb
def create
super
model_name = current_user.access.capitalize.constantize
spec = model_name.where(user_id: current_user.id).take
session[:spec] = spec
end
所以我可以通过 session[:spec] 访问它,但不能通过 current_user。有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 devise