通常、モデルのファイルはmodelsディレクトリの直下にファイルを作成しますが、管理の都合など何らかの理由でモデルをサブディレクトリに入れたいことがあると思います。

例:models/sample/category.rb

 

module Sample
  class Category < ActiveRecord::Base
    set_table_name "sample_categories"
  end
end

 

モデルを階層化する(サブディレクトリにモデルを入れる)方法として、environment.rbでconfig.load_paths にサブディレクトリのモデルを追加する方法が色々なブログで紹介されています。

 

http://errtheblog.com/posts/3-organize-your-models
http://toolmantim.com/articles/keeping_models_in_subdirectories
http://www.kevinmonk.co.uk/?p=38

 

config.load_paths += Dir["#{RAILS_ROOT}/app/models/**/**"]

 

しかし上記方法で問題が出る場合もあり、さらに簡単な方法で実現できますのでご紹介します。

 

サブディレクトリ内のモデルをコントローラ内で利用する際に、::Sample::Category (Sample::Category ではない!) という風に呼び出すことで config.load_paths の追加等をせずに利用することができます。
Sample::Categoryで呼び出した場合に問題が出る場合がありますので、::Sample::Categoryと先頭に「::」を付けて呼び出すことで問題が直る場合がありますのでお試しください。

ブックマークに追加する

.
web開発ならKBMJ
Rubyでのwebシステム開発は
実績豊富なKBMJにお任せ下さい
iPhone開発
iPhone開発は
KBMJにお任せ下さい
ブラウザゲーム エインヘリアル
ブラウザゲーム「エインへリアル」
αテスター募集中
オープンソースECパッケージ エレコマ
オープンソースECパッケージ
「エレコマ」

プロフィール

furuya
furuya
皆さんのお役に立てる記事が書ければ幸いです。

最近チェックした記事

最新記事

アーカイブ

アクセスランキング

KBMJのWebソリューション
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ