2012-01-03 3 views
0

私は、ユーザーによって定義されたいくつかのモデルに関連付けを追加する必要がある宝石を作成中です。ユーザーによって指定されたモデルに関連付けを追加するレールの宝石をどのように初期化するか

私は、レールジェネレータコマンドでアプリにコピーできる初期化ファイルを持っています。これは、ユーザーが関連付けを追加するモデルを指定する場所です。宝石インサイド

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

、私はこの

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 

を指定している私のテストでは、私の宝石を渡しますが、若干異なるので、それを行うための最善の方法を確認したかった初期化し、レールされています。私は私の宝石の一つを書いたとき

答えて

0

はたぶん、あなたはRails::Railtie

を見てみることができます、私は私のRailsのアプリ内のすべてのモデルは私の宝石を初期化する前にロードされるまで待つ必要がありました。私はそれがあなたの必要でもあると思います。

module GemName 
    class Railtie < Rails::Railtie 

    config.after_initialize do 
     class ActiveRecord::Base 
     include GemName::ModelAdditions 
     globalize 
     end 
    end 
    end 
end 

config.after_initializeコールバックが私のためにうまく働いた:私はこのような何かをしました!

関連する問題