我觉得我正在失去理智,但有人可以通过回答这个问题来恢复它。我正在使用Devise并拥有current_user实例。我还有一个Identity模型,其中包含以下内容:
t.references :user
t.string :provider
t.string :uid
t.string :token
t.string :secret_key
t.string :nickname
t.string :image
关系如下:
class Identity < ActiveRecord::Base
# Associations
belongs_to :user
class User < ActiveRecord::Base
# Associations
has_many :identities
我试图通过current_user从Identity模型中获取“昵称”字段。
为什么这样的东西在视图中不起作用?
<%= current_user.identity.nickname %>
我可能会添加我试图在appplication.html.erb模板中执行此操作。我目前没有实例变量或任何身份设置。
感谢。
答案 0 :(得分:0)
user
有很多身份,因此调用user.identity
有些不对劲。我假设你使用identity
模型允许用户通过不同的服务登录。如果是这种情况,您应该保存用户使用的identity
以登录会话,只需添加便捷方法即可获得当前身份。
在会话控制器创建操作中,添加以下代码(假设您知道用户用于登录的identity
记录)
session[:identity_id] = identity.id
然后只需添加一个名为current_identity
def current_identity
@current_identity ||= current_user.identities.find(session[:identity_id])
end
因此,在您的应用程序布局中,只需调用current_identity.nickname