ActiveRecord对象属性名称与方法名称相同

hie*_*iei 11 ruby-on-rails

我正在尝试在ActiveRecord对象上调用一个方法,其中存在同名属性.这会导致SystemStackError: stack level too deep错误.

如何从方法中访问对象属性以进行修改?

def first_name

 return self.first_name.upper

end
Run Code Online (Sandbox Code Playgroud)

Mik*_*iet 28

如果这是Active Record模型,您可以使用read_attribute方法

def first_name
  read_attribute(:first_name).upper
end
Run Code Online (Sandbox Code Playgroud)

  • 或者 `self[:first_name].upper` 如果 rubocop 抱怨:) (5认同)