Ruby on rails Rails:setter中未定义的Attr访问器方法

Ruby on rails Rails:setter中未定义的Attr访问器方法,ruby-on-rails,ruby,setter,attr-accessor,Ruby On Rails,Ruby,Setter,Attr Accessor,我在用户模型中有以下代码行: attr_accessor :birthdate 在同一个模型中,我有一个方法尝试通过以下方式设置生日: self.birthdate = mydate 其中mydate是一个日期对象 我得到这个错误:未定义的方法birthdate=' 为什么会这样?attr_accessor不是创建了一个setter和一个getter吗?让我猜猜,您是从类方法调用那个setter,对吗 class Foo attr_accessor :bar def set_bar

我在用户模型中有以下代码行:

attr_accessor :birthdate
在同一个模型中,我有一个方法尝试通过以下方式设置生日:

self.birthdate = mydate
其中mydate是一个日期对象

我得到这个错误:
未定义的方法birthdate='


为什么会这样?attr_accessor不是创建了一个setter和一个getter吗?

让我猜猜,您是从类方法调用那个setter,对吗

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)

发布完整的代码,重现我所寻找的问题。