如何初始化rails gem,它将关联添加到用户指定的模型

我正在创建一个gem,它需要为用户定义的某些模型添加关联。

我有一个初始化文件,可以通过rails生成器命令将其复制到应用程序中,这是用户将指定要添加关联的模型的位置。

BloggyGem.setup do |config| config.user = User config.post = Post end 

gem内部,我有这个指定

  opts = BloggyGem.settings opts.user.has_many opts.post.to_s.downcase.pluralize.to_sym, :class_name => opts.post.model_name opts.post.belongs_to opts.user.to_s.downcase.singularize.to_sym, :class_name => opts.user.model_name 

我的测试是在传递我的gem,但导轨初始化略有不同,所以想要确保最好的方法。

也许你可以看看Rails :: Railtie

当我编写我的一个gem时,我需要等到我的Rails应用程序中的所有模型都被加载后才能初始化我的gem。 我想这也是你的需要。 我做了这样的事情:

 module GemName class Railtie < Rails::Railtie config.after_initialize do class ActiveRecord::Base include GemName::ModelAdditions globalize end end end end 

config.after_initialize回调对我来说很好!