如何初始化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
回调对我来说很好!