ruby-on-rails – 更改before_save挂钩中的ActiveRecord属性值

ruby-on-rails – 更改before_save挂钩中的ActiveRecord属性值,第1张

概述我需要修复ActiveRecord属性的编码,并决定在before_save挂钩中执行此 *** 作.此时我发现了一个意想不到的功能.当我想更改属性的值时,使用attribute_name = XY的简单 *** 作并不像我预期的那样工作.而不是我需要使用self [:attribute_name] = XY.到目前为止还没有认识到这种行为,我使用了AR.attribute_name = XY.这是什么原因?这种 我需要修复ActiveRecord属性的编码,并决定在before_save挂钩中执行此 *** 作.此时我发现了一个意想不到的功能.当我想更改属性的值时,使用attribute_name = XY的简单 *** 作并不像我预期的那样工作.而不是我需要使用self [:attribute_name] = XY.到目前为止还没有认识到这种行为,我使用了AR.attribute_name = XY.这是什么原因?这种行为是否与钩子或其他东西有关?谢谢你的解释.解决方法 这实际上是一个 Ruby“功能”:

def value=(x)  p xenddef run  value = 123endrun# => 123

在上面的#run中,执行值会分配一个局部变量,而不是其他任何东西.如果你想调用#value =,你必须指定接收者:

def run  self.value = 123endrun123# => nil

希望这可以帮助!

总结

以上是内存溢出为你收集整理的ruby-on-rails – 更改before_save挂钩中的ActiveRecord属性值全部内容,希望文章能够帮你解决ruby-on-rails – 更改before_save挂钩中的ActiveRecord属性值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1285713.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存