无法访问Rails 4中记录的列

yer*_*syl 0 ruby-on-rails

我有带墨盒名称的墨盒模型:

t.string   "cartridge_name", null: false
Run Code Online (Sandbox Code Playgroud)

我对它执行查询:

@cartridge = Cartridge.where('cartridge_name=?', "#{value[:cartridge_id]}")
Run Code Online (Sandbox Code Playgroud)

它返回一个对象:

<ActiveRecord::Relation [#<Cartridge id: 1, cartridge_name: "HP laserjet 3000", note: "", created_at: "2015-04-14 08:05:37", updated_at: "2015-04-14 08:05:37">]>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问@ cartridge.id或@ cartridge.cartridge_name时,它会返回错误:

NoMethodError: undefined method `cartridge_name' for #<Cartridge::ActiveRecord_Relation:0x007fbd77bf38f8>
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样.什么可能导致错误?

Dre*_*nmi 5

where返回包含您的关系的集合.你需要做这样的事情来获得实际的Cartridge:

@cartridge = Cartridge.where('cartridge_name=?', "#{value[:cartridge_id]}").first
Run Code Online (Sandbox Code Playgroud)

要么:

@cartridge = Cartridge.find_by(cartridge_name: value[:cartridge_id])
Run Code Online (Sandbox Code Playgroud)