我有带墨盒名称的墨盒模型:
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)
我不知道为什么会这样.什么可能导致错误?
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)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |