1

我想覆盖 Rails 3 中 ActiveSupport::CoreExtensions::String::Inflections.foreign_key 的行为,不确定如何正确执行。

在 Rails 2.3 中,我创建了一个打开类并重新定义方法的插件,但它似乎在 3.0 中不起作用

4

1 回答 1

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"
于 2012-09-06T19:50:23.883 回答