NoMethodError:未定义的方法`pluck&#39;对于#<model>

时间:2017-04-01 07:06:11

标签: ruby-on-rails activerecord

我正在尝试通过将其与另一个名为设备的模型相结合,从我的用户模型中获取电子邮件ID。两种模型之间的关联如下:

override val t: Thread = Thread({
    try {
        transmit()
    } catch (e: Exception) {
        println("Transmitter throws exception: $e")
    }}, "Your name here")
}

设备有一个名为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)

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

2 个答案:

答案 0 :(得分:4)

pluck方法适用于ActiveRecord::Relation,而非模型本身。当您添加last方法时,它会返回一个模型实例,因此请直接访问它的列,无需使用pluck

试试这个:

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

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

答案 1 :(得分:0)

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

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

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