1

明らかなことを見落としているかもしれませんが、このレール ゾンビ チュートリアルに実用的なシナリオを適用しようとしています。

--------質問------------ モデルと関係が適切に定義されていると仮定して、ゾンビ「アッシュ」に属するすべての武器を見つけます。

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 に答える