堆栈级别太深,比read_attribute更好?

Spy*_*ros 2 ruby-on-rails

我正在为一些模型编写一个具有虚拟属性的模块.现在,我知道为什么我得到一个堆栈太深的错误,我可以使用read_attribute.

但是,我真的不喜欢在getter/setter中使用read_attribute方法.我认为它使代码更难以理解.还有另一种更漂亮的方法吗?

Dan*_*ail 7

如果您正在寻找更干净的代码,您可以使用self[:attr]而不是read/write_attribute(:attr):

def bar
  self[:bar].reverse
end

def bar=(new_bar)
  self[:bar] = new_bar.upcase
end
Run Code Online (Sandbox Code Playgroud)