NoMethodError: #<Model>没有定义`pluck`方法

5

我正在尝试通过将我的User模型与另一个名为Equipment的模型连接来获取电子邮件地址。两个模型之间的关联如下:

class Equipment
  belongs_to :user
end

class User
  has_many :equipments
end

设备有一个名为identifier的列。 因此,我首先尝试按以下方式获取用户的电子邮件。

 @email = Equipment.joins(:user).where(identifier: "LID-0000061").pluck(:email)

这个方法有效,并给了我添加该设备的用户的电子邮件地址。

现在我正在尝试通过以下方式获取最后添加的设备的email

@email = Equipment.joins(:user).last.pluck(:email)

I got:

NoMethodError: undefined method `pluck' for #<Equipment>

我猜测我的做法是错误的。请问有谁能告诉我如何获取最后一个设备的电子邮件地址?

2个回答

10
pluck方法适用于ActiveRecord::Relation,而不是模型本身。当你添加last方法时,它返回一个模型实例,所以可以直接访问它的列,不需要使用pluck
尝试这样做:
@email = Equipment.joins(:user).last.user.email

或者

@email = Equipment.joins(:user).pluck(:email).last

NoMethodError: 在 #<Equipment> 上未定义 email 方法 - user3576036
1
请尝试以下代码:@email = Equipment.joins(:user).last.user.email - seaify - Freelancer
实际上,您还可以选择@email = Equipment.joins(:user).pluck(:email).last - seaify - Freelancer

0

Pluck 只能用于 ActiveRecord::Relation,不能用于模型实例。您也可以使用 select,而不是 pluck。

If you want to use pluck, you can follow like this:

@email = Equipment.joins(:user).pluck(:email).last

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接