我想在Rails 3中覆盖ActiveSupport :: CoreExtensions :: String :: Inflections.foreign_key的行为,不知道如何正确地执行它。
在Rails 2.3中,我创建了一个打开该类并重新定义该方法的插件,但它似乎不适用于3.0
答案 0 :(得分:0)
ActiveSupport::CoreExtensions::String::Inflections#foreign_key
委托给ActiveSupport::Inflector.foreign_key
实际逻辑的代表,所以我建议修补后者。
尝试将其添加到config/initializers/extensions.rb
:
require 'inflector_extensions'
然后您的代码进入lib/inflector_extensions
:
module ActiveSupport::Inflector
def foreign_key(class_name, separate_class_name_and_id_with_underscore = true)
underscore(demodulize(class_name)) + '_my_legacy_suffix'
end
end
这应该给出:
$ ./script/rails c
Loading development environment (Rails 3.0.11)
>> "whetever".foreign_key
=> "whetever_my_legacy_suffix"