2017-04-01 97 views
2

我試圖用另一種模式加入它來從我用戶模型的電子郵件ID叫設備。兩種模式之間的關聯如下:NoMethodError:未定義的方法`勇氣」爲#<Model>

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) 

我:

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

我最好的猜測是,我做錯了。有人可以告訴我如何摘取最後一個設備的電子郵件嗎?

回答

3

pluck方法適用於ActiveRecord::Relation,而不是模型本身。當您添加last方法,它返回一個模型實例,所以直接訪問它的專欄中,沒有必要使用pluck

試試這個:

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

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

NoMethodError:未定義的方法'email'爲# user3576036

+0

我甚至嘗試'。嘗試(:電子郵件)'。返回'nil' – user3576036

+1

em,試試'@email = Equipment.joins(:user).last.user.email' –

0

普呂克作品與ActiveRecord ::關係不與模型實例。您也可以使用選擇,而不是採摘。

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

@email = Equipment.joins(:user).pluck(:email).last 
相關問題