1

也许我忽略了一些明显的东西,但我正在尝试将一个实际场景应用到这个僵尸教程的轨道上。

--------问题------------ 假设模型和关系定义正确,找到所有属于僵尸'Ash'的武器。

class Zombie < ActiveRecord::Base
  has_many :weapons
end

class Weapon < ActiveRecord::Base
  belongs_to :zombie
end

本教程接受以下答案 -

z = Zombie.find(1)
[#<Zombie ­id: 1, nam­e: "Ash", ­graveyard:­ "Glen Hav­en Memoria­l Cemetery­">]

z.weapons
[#<Weapon ­id: 1, nam­e: "Hammer­", strengt­h: 1, zomb­ie_id: 1>]

但对我来说,这不是那么实际,就好像我正在做这个项目并且出现了那种类型的问题,我会这样做。

ash = Zombie.where(:name => "Ash")
[#<Zombie ­id: 1, nam­e: "Ash", ­graveyard:­ "Glen Hav­en Memoria­l Cemetery­">]

ash.weapons

给出输出

#<NoMetho­dError: un­defined me­thod `weap­ons' for #­<ActiveR­ecord::Rel­ation:0x00­0000163347­38>>

当寻找僵尸的输出完全相同并且考虑到问题的框架方式(即使它们提供数据库表)时,我发现僵尸的方式更加实用,这怎么可能。这可能是 codeschool 交互式控制台的细微差别,还是我遗漏了什么?

感谢您的关注。

4

1 回答 1

2

正如您的结果所示:

[#<Zombie ­id: 1, nam­e: "Ash", ­graveyard:­ "Glen Hav­en Memoria­l Cemetery­">]

这是某种增强型阵列。所以如果你愿意:

ash = Zombie.where(:name => "Ash").first
ash.weapons

将归还所有武器。

于 2013-01-17T04:10:49.117 回答