gpt4 book ai didi

ruby-on-rails - 什么时候在模型中使用 self ?

转载 作者:行者123 更新时间:2023-12-04 05:13:38 26 4
gpt4 key购买 nike

问题:我什么时候需要在 Rails 的模型中使用 self ?

我有一个 set我的模型之一中的方法。

class SomeData < ActiveRecord::Base
def set_active_flag(val)
self.active_flag = val
self.save!
end
end

当我这样做时,一切正常。但是,当我这样做时:
class SomeData < ActiveRecord::Base
def set_active_flag(val)
active_flag = val
save!
end
end

active_flag 值不会改变,而是静默失败。有人可以解释一下吗?

我找不到任何重复项,但如果有人找到也没关系。

最佳答案

当您对调用该方法的实例执行操作时,您可以使用 self.

有了这个代码

class SocialData < ActiveRecord::Base
def set_active_flag(val)
active_flag = val
save!
end
end

您正在定义一个名为 active_flag 的全新范围​​局部变量,将其设置为传入的值,它与任何内容都没有关联,因此当方法结束时它会立即被丢弃,就像它从未存在过一样。
self.active_flag = val

但是告诉实例修改它自己的名为 active_flag 的属性,而不是一个全新的变量。这就是它起作用的原因。

关于ruby-on-rails - 什么时候在模型中使用 self ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805136/

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