Dmi*_*tri 2 ruby attributes model ruby-on-rails getter-setter
price我的模型中有一个属性.
我可以使用attribute-getter,它的名称就像属性一样
def price
... logic logic ..
return something
end
Run Code Online (Sandbox Code Playgroud)
为了覆盖属性本身?
目前它不起作用.如果我调用model.price它有效,但当它通过保存对象时model.save,它会存储默认值.
它能以无痛的方式完成,还是应该进行before_save回调?
如果在Ruby中设置值,则访问setter方法.如果要覆盖setter,则必须执行以下操作:
def price=(_price)
# do some logic
write_attribute(:price, _price)
end
Run Code Online (Sandbox Code Playgroud)
这当然是一个讨论点.有时您可以更好地使用回调.像这样的东西:
before_save :format_price
private
def format_price
# Do some logic, for example make it cents.
self.price = price * 100
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3030 次 |
| 最近记录: |