gpt4 book ai didi

ruby-on-rails - 在 ActiveRecord 的类中初始化变量

转载 作者:太空宇宙 更新时间:2023-11-03 18:01:39 26 4
gpt4 key购买 nike

如何在 ActiveRecord 类中初始化变量?这里的变量是数据库范围之外的变量

例如:

class Product
attr_accessor :used
end

我想最初将 @used 分配给 false,稍后如果有人访问该产品,我会将 @used 更改为

首先我想到将 @used=false 放在初始化方法中,但它没有被调用。

最佳答案

attr_accessor_with_default :used, false

或者如果你想使用初始化方法,你可以定义回调 after_initialize

def after_initialize
@used = false
end

attr_accessor_with_default 与对象文字(例如 attr_accessor_with_default :used, false)一起使用对于任何可变对象都是不安全的。具体来说,这意味着您的类的不同实例将相同 对象作为它们的默认值。这有点像在需要实例变量 (@my_var) 的地方尝试使用类变量 (@@my_var)。如果要使用可变对象(例如 StringArrayHash),则必须使用 block 语法:

attr_accessor_with_default(:used) { Array.new }

关于ruby-on-rails - 在 ActiveRecord 的类中初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2964060/

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