也许我忽略了一些显而易见的事情,但我正在尝试将一个实际场景应用于僵尸教程的这个轨道。
--------问题------------ 假设模型和关系被正确定义,找到属于Zombie'Ash'的所有武器。
class Zombie < ActiveRecord::Base
has_many :weapons
end
class Weapon < ActiveRecord::Base
belongs_to :zombie
end
本教程接受 -
的答案z = Zombie.find(1)
[#<Zombie id: 1, name: "Ash", graveyard: "Glen Haven Memorial Cemetery">]
z.weapons
[#<Weapon id: 1, name: "Hammer", strength: 1, zombie_id: 1>]
但是对于我来说这不太实际,好像我正在研究这个项目并提出这类问题我会这样做。
ash = Zombie.where(:name => "Ash")
[#<Zombie id: 1, name: "Ash", graveyard: "Glen Haven Memorial Cemetery">]
但是
ash.weapons
给出输出
#<NoMethodError: undefined method `weapons' for #<ActiveRecord::Relation:0x00000016334738>>
当找到僵尸的输出完全相同时,这是怎么回事?鉴于问题的框架方式(即使它们提供数据库表),我找到僵尸的方式更加实用。它可能是codechool交互式控制台的细微差别,还是我错过了什么?
感谢您的关注。
答案 0 :(得分:2)
结果表明:
[#<Zombie id: 1, name: "Ash", graveyard: "Glen Haven Memorial Cemetery">]
这是一种强化阵容。 所以,如果你愿意:
ash = Zombie.where(:name => "Ash").first
ash.weapons
将返回所有武器。