Как включить модуль во все модели ActiveRecord проекта Rails? - PullRequest
0 голосов
/ 18 мая 2010

Я хочу включить этот модуль в каждую модель ActiveRecord в моем приложении Rails, не пропуская include NotificationResourceableTraits в каждом файле. Есть ли способ?

module NotificationResourceableTraits
  def self.included(base)
    base.has_many :notification_resources, :as => :notification_resourceable
    base.has_many :notifications, :through => :notification_resources
  end
end

1 Ответ

1 голос
/ 18 мая 2010

Я недавно решил эту проблему. Взгляните на мою суть: http://gist.github.com/404298

Вы можете просто сделать это:

ModelDiscovery.valid_active_record_classes.each do |model|
  model.include YourMixinModule
end

Объяснение

  1. Получить список всех файлов в 'app / models'
  2. Преобразование имен файлов в CamelCase
  3. Подтвердите все из них
  4. Проверьте, существуют ли таблицы (если хотите)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...