NoMethodError:未定义的方法`name' for:account:Symbol

时间:2017-03-07 04:36:16

标签: ruby-on-rails ruby-on-rails-4 associations

我正在尝试查询以下内容

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

我收到此错误:

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

已在模型上定义了Vehicle和Account之间的关联,以及我的用户约定。为什么我会收到此错误?

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

2 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

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

您还可以搜索空白字段:

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

答案 1 :(得分:0)

引发错误是因为rails将account视为一列,如果您想要关联表的条件然后在它们之间进行连接,如下所示

Vehicle.joins('account').where("account.name IS NULL").count