2017-03-07 74 views
0

我想查詢以下NoMethodError:未定義的方法`名」爲:賬號:符號

Vehicle.where(:account.name => "").count 

,我得到這個錯誤:

NoMethodError: undefined method `name' for :account:Symbol 

車輛和客戶之間的關聯一直在模型上定義和我用戶約定。爲什麼我會得到這個錯誤?


Vehicle.rb

class Vehicle < ActiveRecord::Base 
    belongs_to :account 
end 

Account.rb

class Account < ActiveRecord::Base 
    has_many :vehicles 
end 

架構

create_table "accounts", force: true do |t| 
    t.string "name" 
    ... 
end 

create_table "vehicles", force: true do |t| 
    t.integer "account_id" 
    ... 
end 

回答

3

您可以使用以下方法:

Vehicle.joins(:account).where("accounts.name = ?", "").count 

您還可以搜索空白字段:

Vehicle.joins(:account).where("accounts.name <> ''").count 
+0

我得到這個錯誤香> PG :: UndefinedTable:錯誤:缺少FROM子句條目表 「帳戶」 LINE 1: 「 」...... nt_id」和「 賬戶deleted_at」 IS NULL WHERE( account.wf ... – Lut

+0

已更新 - 使用表格名稱複數 – Shannon

+0

我仍然收到一個錯誤:在Vehicle上找不到名爲'accounts'的協會;也許你拼錯了嗎? – Lut

0

錯誤是提價,是因爲鐵軌正在考慮account爲一列,如果你想在那裏條件相關聯的表,然後使它們之間的連接,如以下

Vehicle.joins('account').where("account.name IS NULL").count 
相關問題