current_user.model通过外键在视图中

时间:2014-03-09 16:45:24

标签: ruby-on-rails ruby-on-rails-4

我觉得我正在失去理智,但有人可以通过回答这个问题来恢复它。我正在使用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模板中执行此操作。我目前没有实例变量或任何身份设置。

感谢。

1 个答案:

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

即可