Расширить метод экземпляра модели - PullRequest
1 голос
/ 01 мая 2011

Я пытаюсь расширить конкретную модель в своем приложении с помощью Railtie. Добавление методов класса работает, но не работает и методов экземпляра. У меня есть следующий код:

  class Railtie
    def self.insert
      return unless defined?(::ActiveRecord)
      ::MyApp::MyModel.extend(ModelMethods)
    end
  end

  module ModelMethods
    def hello
      puts "hello"
    end
  end

Теперь я могу позвонить MyModel.hello. Но что мне делать, если я хочу добавить некоторые методы экземпляра? Когда я пытаюсь добавить их через ::MyApp::MyModel.include(InstanceMethods), происходит сбой, когда говорят о вызове приватных методов.

1 Ответ

2 голосов
/ 01 мая 2011

include является закрытым методом и не может иметь явного получателя.Вы можете обойти это ограничение, используя send:

MyModel.send(:include, InstanceMethods)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...