1

基本的には、複数のプロジェクト間でいくつかのモデルを共有することです。私はすべてのモデルが定義されている基本プロジェクトと、thousモデルを必要とする他のプロジェクトはすべて同じデータを使用しているためです。私は何を使用すると、他のプロジェクトのモデルフォルダを指すconfig.autoload_pathsを定義していると述べたということでRuby on Rails:Rails 3.1,3.2で外部フォルダからのモデルの自動ロードに失敗する

、:

config.autoload_paths += %W(#{config.root}/../base_project/app/models) 

Railsの3.0それはしかしRailsの3.1、3.2で、完全に正常に動作して、私は例えば、すべてのモデル名に初期化されていないconstnatを得る:

NameError (uninitialized constant ApplicationController::User): 
    app/controllers/application_controller.rb:11:in `current_user' 

私はそれらをリンクするファイルやシンボリックを複製せずに、それを解決することができますか?あなたがrequire_dependencyでモデルをロードしようとすることができhttps://github.com/rails/rails/issues/5007

答えて

1

FYI、私はここにバグを満たしてきました。おそらく、アプリケーションの負荷として次のことができます。 (require_dependencyレールの一部、及びrequireとは異なる。)

Dir.glob(File.join(config.root, "**", "*.rb")) { |filename| require_dependency filename } 

これはしかし、理想的ではないかもしれません。

さらに一般的な(また間違いなく良い)ソリューションは、モデルをパッケージ化して宝石として利用できるようにすることです。 xxxには、GitHubのリポジトリへのパス、のBitbucketリポジトリ、vendorディレクトリ、またはそうでなければ可能性があり

# Gemfile of some project 
gem 'shared_models_by_gabriel', :path => 'xxx' 

。 (Although you should be aware of Rails 4 plans for vendor.

関連する問題