1 つの Rails 上にいろいろなプロジェクトが動いているのでファイルを管理しやすいように分割したいです
テーブルは project名_model名s モデルは app/models/project名/<model名>.rb コントローラーは app/models/project名/<model名>_controller.rb
のようにできれば理想なのですが
view や assets だけはディレクトリにほうりこんでも普通にみえるのに
コントローラーやモデルはディレクトリにいれるとロードパス等を設定しないとみえなくなります
置き場所をディレクトリに分ける記事はいろいろでてきますが
モデルとテーブル名を別にする方法があまりでてこなくて
set_table_name を使う生地をみかけたのですが Rails 4.2.3 では見つからないメソッドといわれてしまいます
モデルとテーブル名を別にすることは可能なのでしょうか
また一般にプロジェクトごとにファイルを管理する方法があれば教えていただけるとありがたいです
追記
試しに最近つくったプロジェクトのファイルで試してみたんですが
- migration のテーブル名を test_ プレフィックス付きに変更
- 各ファイルを test サブディレクトリを作って移動
- user.rb のモデル名に Test:: を追加
- test.rb を作って回答で教えていただいた table prefix の設定記述
- コントローラーに User = Test::User を追加
で index はうまく表示されたのですが
new のときに form_for @user で
undefined method `test_users_path といわれてしまいます
route 一覧をみると users_path しかありません
route.rb にも何か必要だったりしますか?
サブディレクトリに分けるとヘルパーは使えないのでしょうか
追記
回答していただいたページをみて
namespace :test, path: '/' do resources :users, path: 'user' do collection do get 'download' end end end
のようにかいたところヘルパーは動き、URLもディレクトリ移動前と同じで動作しました
メモ
i18n 辞書は namespace/モデル とスラッシュで区切る
ja: activerecord: attributes: test/user: name: 名前
回答1件
あなたの回答
tips
プレビュー