gpt4 book ai didi

ruby-on-rails - 我可以为 db 列的属性实现 rails setter 和 getter

转载 作者:行者123 更新时间:2023-12-04 06:08:03 24 4
gpt4 key购买 nike

在 rails 中,我们可以通过提供的属性 rails 访问 db 列,但是我们可以更改它吗?例如,我有带有名称列的数据库,我可以实现类似的东西。

def name
"sir" + name
end

我试过了,但它导致堆栈溢出。有办法做到这一点。

更多问题,name 和 self.name 之间有什么区别。

最佳答案

def name
"sir" + read_attribute(:name)
end

但要避免这种做法。改用额外的 getter/setter,也称为“虚拟属性”。有关更多信息,请阅读此答案:decorating an attribute in rails

在你的情况下,还有一个奇怪的副作用。每次访问该属性时,它都会附加名称。 3 次调用后,您最终得到了

"sir sir sir name"

确实可以

def name
n = read_attribute(:name)
if /^sir/.match(name)
n
else
"sir #{n}"
end
end

但是,说真的,不要这样做。

关于ruby-on-rails - 我可以为 db 列的属性实现 rails setter 和 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1906702/

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