我正在为一些模型编写一个具有虚拟属性的模块。现在,我知道为什么我得到一个堆栈太深的错误,并且我可以使用read_attribute。
但是,我真的不喜欢在getter / setter中使用read_attribute方法。我认为它使代码更难以理解。还有另一种更漂亮的方法吗?
答案 0 :(得分:7)
如果您正在寻找更干净的代码,可以使用self[:attr]
代替read/write_attribute(:attr)
:
def bar
self[:bar].reverse
end
def bar=(new_bar)
self[:bar] = new_bar.upcase
end