gpt4 book ai didi

ruby-on-rails - Rails 使用他的 getter 覆盖属性

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:34 24 4
gpt4 key购买 nike

我的模型中有一个 price 属性。

我可以使用attribute-getter吗,它的命名就像属性一样

def price
... logic logic ..
return something
end

为了覆盖属性本身?

目前它不起作用。如果我调用 model.price 它会起作用,但是当它通过 model.save 保存对象时,它会存储默认值。

可以轻松完成吗,还是我应该做一个 before_save 回调?

最佳答案

如果您在 Ruby 中设置一个值,您将访问 setter 方法。如果你想覆盖 setter ,你必须做这样的事情:

def price=(_price)
# do some logic
write_attribute(:price, _price)
end

这当然是一个讨论点。有时您可以更好地使用回调。像这样:

before_save :format_price

private

def format_price
# Do some logic, for example make it cents.
self.price = price * 100
end

关于ruby-on-rails - Rails 使用他的 getter 覆盖属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13088489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com