NoMethodError: #<Model> 的未定义方法 `pluck'

use*_*036 4 activerecord ruby-on-rails

我试图通过将它与另一个名为Equipment 的模型连接来从我的User模型中获取电子邮件 ID 。两个模型之间的关联如下:

class Equipment
  belongs_to :user
end

class User
  has_many :equipments
end
Run Code Online (Sandbox Code Playgroud)

设备有一个名为列identifier 在第一次我试图这样一个获取用户的电子邮件如下。

 @email = Equipment.joins(:user).where(identifier: "LID-0000061").pluck(:email)
Run Code Online (Sandbox Code Playgroud)

这有效并给了我添加该设备的用户的电子邮件。

现在,我想取email最后通过做以下补充设备:

@email = Equipment.joins(:user).last.pluck(:email)
Run Code Online (Sandbox Code Playgroud)

我有:

NoMethodError: undefined method `pluck' for #<Equipment>
Run Code Online (Sandbox Code Playgroud)

我最好的猜测是我做错了。有人可以告诉我如何提取最后一个设备的电子邮件吗?

sea*_*cer 7

pluck方法适用于ActiveRecord::Relation,而不适用于模型本身。添加last方法时,会返回一个模型实例,所以直接访问它的列,不需要使用pluck

尝试这个:

@email = Equipment.joins(:user).last.user.email
Run Code Online (Sandbox Code Playgroud)

或者

@email = Equipment.joins(:user).pluck(:email).last
Run Code Online (Sandbox Code Playgroud)