2012-04-12 9 views
4

でAttrのアクセサ未定義方法:レール:私はUserモデルにコード行を持っているセッター

:同じモデルで

attr_accessor :birthdate 

、私はこれを行うことによって、その誕生日を設定しようとする方法を持っています

self.birthdate = mydate 

ここで、mydateはDateオブジェクトです。 undefined method birthdate='

ですが、なぜでしょう:

私はこのエラーを取得しますか? attr_accessorはセッターとゲッターを作成していませんか?

+1

問題を再現する完全なコードを投稿してください。 –

答えて

15

私は、あなたはクラスメソッドからそのセッターを呼び出すと思いますよね?

class Foo 
    attr_accessor :bar 

    def set_bar val 
    self.bar = val # `self` is an instance of Foo, it has `bar=` method 
    bar 
    end 

    def self.set_bar val 
    self.bar = val # here `self` is Foo class object, it does NOT have `bar=` 
    bar 
    end 
end 

f = Foo.new 
f.set_bar 1 # => 1 
Foo.set_bar 2 # => 
# ~> -:10:in `set_bar': undefined method `bar=' for Foo:Class (NoMethodError) 
+0

私が探していたものです。 –

+2

あなたは、推測のためにupvote行く! – shime

関連する問題