#buy_fish
を使用してインスタンスの#pets
ハッシュに追加する際に問題があります。これは、ハッシュに追加されているものを正常に返しますが、ハッシュは変更されません。インスタンスのハッシュ(ルビー)に追加できません
所有者クラス
class Owner
attr_accessor :name
def initialize(name)
pets
end
def pets
@pets = {cats: [], dogs: [], fishes: []}
end
def buy_fish(name)
self.pets[:fishes] << Fish.new(name)
end
end
ステファンが指摘したように、pets
への各呼び出しは@pets
に新しいハッシュをasssigns
class Fish
attr_reader :name
def initialize(name)
@name = name
end
end
「pets」を呼び出すたびに、 '@pets'に新しいハッシュが割り当てられます。代入を 'initialize'に移すか' @pets || = {...} 'を使います。 – Stefan
また、 'self.pets [:fishes] .push(Fish.new(name))'をしたいと思います。それ以外の場合は、毎回、単一の 'Fish'インスタンスにキーを設定するだけです。 – John
ステファンありがとうございます。それはうまくいった。私は学んでいなかった|| =まだ。これを行う別の方法がありますか?私は悪いコードを書いたので、これがチートアウトになったような気がしますか? また、Johnさん、コードを修正するときに気がつきました。とにかくありがとう! –