Невозможно переопределить метод класса с исправлением обезьяны в Ruby on Rails

Поэтому я пытаюсь переопределить метод класса reflect_on_association в ActiveRecord::Reflection. Вот ссылка на исходный файл: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/reflection.rb

Метод был определен в строке 106.

Это мои попытки до сих пор:

1.

ActiveRecord::Reflection::ClassMethods.module_eval do
  # A test method
  def say_hello
    puts 'hello'
  end

  # I want to override the original method with this one
  def reflect_on_association(association)
    puts 'overridden!'
    # < Implementation goes here >
  end
end

2.

module ActiveRecord::Reflection::ClassMethods
  # A test method
  def say_hello
    puts 'hello'
  end

  # I want to override the original method with this one
  def reflect_on_association(association)
    puts 'overridden!'
    # < Implementation goes here >
  end
end

Методы say_hello работают в обоих случаях (например, когда я вызываю Person.say_hello), но все равно не везет с reflect_on_association.

Кто-нибудь знает, как я могу это сделать? Большое спасибо!


person joeleba    schedule 14.07.2015    source источник
comment
Где вы делаете переопределение? Порядок загрузки может быть важен. Попробуйте внутри инициализатора.   -  person simonwo    schedule 15.07.2015
comment
да, я уже положил его внутрь config/initializers   -  person joeleba    schedule 15.07.2015


Ответы (1)


работает в май случае!

убедитесь, что вы передаете параметр с Reflect_on_association.

1.9.3-p551 :514 > Person.reflect_on_association(state)
overridden!
=> nil 
person Deepak Mahakale    schedule 14.07.2015
comment
О боже. Вы делаете это первым или вторым способом? - person joeleba; 14.07.2015
comment
@joeleba Второй способ - person Deepak Mahakale; 16.07.2015