我正在将现有的Rails 3升级升级到Rails 4.这个应用程序猴子补丁ActiveRecord::Base#assign_attributes
并且在Rails 3中运行良好;现在在Rails 4中,猴子修补的代码永远不会被调用。
我有一个配置初始化程序,它需要lib目录中的猴子修补代码,我可以看到它在启动初始化过程中运行了一次。
这是lib目录中猴子补丁文件的简化版本。
# encoding: UTF-8
module ActiveRecord
class Base
alias_method :default_assign_attributes, :assign_attributes
def assign_attributes(new_attributes)
# Do some custom stuff here
default_assign_attributes(new_attributes)
end
end
end
答案 0 :(得分:1)
这个(以及许多其他)方法在Rails 4中被分解为关注点。这个方法进入了ActiveRecord::AttributeAssignment
。你应该对这个问题进行修补,而不是ActiveRecord::Base
。
也就是说,如果你想定义自己的assign_attributes
方法,你应该通过猴子修补核心类来定义你自己的关注点,而不是。