繁体   English   中英

Ruby on Rails类方法作用域对象参考

[英]Ruby on Rails Class method scoped objects references

我想知道是否可以使用类方法修改对象。

例如, users = User.scoped #这将选择所有对象

而且,假设我想为每个对象分配一个变量。 假设,我希望他们共享一个值。 因此,当我尝试访问例如users.first.my_variable ,它将产生我想要的值。

我天真的实现:

def self.set_my_variable(variable_value) 
    scoped.tap do |obj|
       obj.my_variable = variable_value
    end   
end

因此,理想情况下,当我不想设置此变量时,应调用这样的类方法: users.set_my_variable("hello, stackoverflow")

但是,当我尝试通过集合的任意对象访问变量时,如下所示:

users.first.my_variable

我得到 .object_id的比较两种: obj.object_idusers.first.object_id表明,它们是不同的。 为什么这样 ? 我以为他们共享相同的引用(指向相同的对象)

有什么办法修复它(最好不将集合传递给此类方法)?

您需要将对象保存到数据库:

   obj.my_variable = variable_value
   obj.save

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM