
概述我需要修复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属性值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)