如何在所有Rails项目的ActiveRecord模型中包含一个模块?

时间:2010-05-17 21:30:51

标签: ruby-on-rails activerecord module polymorphism

我想在我的Rails应用程序中的每个ActiveRecord模型中包含此模块,而不会在每个文件中删除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 个答案:

答案 0 :(得分:1)

我刚刚解决了这个问题。看看我的要点:http://gist.github.com/404298

你可以这样做:

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

说明

  1. 获取“app / models”
  2. 中所有文件的列表
  3. 将文件名转换为CamelCase
  4. 对所有这些进行限制
  5. 检查表格是否存在(如果需要)