ruby-on-rails – 更改before_save挂钩中的ActiveRecord属性值
发布时间:2020-12-17 02:50:50 所属栏目:百科 来源:网络整理
导读:我需要修复ActiveRecord属性的编码,并决定在before_save挂钩中执行此操作.此时我发现了一个意想不到的功能.当我想更改属性的值时,使用attribute_name = XY的简单操作并不像我预期的那样工作.而不是我需要使用self [:attribute_name] = XY.到目前为止还没有
我需要修复ActiveRecord属性的编码,并决定在before_save挂钩中执行此操作.此时我发现了一个意想不到的功能.当我想更改属性的值时,使用attribute_name = XY的简单操作并不像我预期的那样工作.而不是我需要使用self [:attribute_name] = XY.到目前为止还没有认识到这种行为,我使用了AR.attribute_name = XY.这是什么原因?这种行为是否与钩子或其他东西有关?谢谢你的解释.
解决方法
这实际上是一个
Ruby“功能”:
def value=(x) p x end def run value = 123 end run # => 123 在上面的#run中,执行值会分配一个局部变量,而不是其他任何东西.如果你想调用#value =,你必须指定接收者: def run self.value = 123 end run 123 # => nil 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |