Rails 3 の scaffold ジェネレーターは、モデル クラスを名前空間内に配置します。例:
rails generate scaffold admin/portfolio
ただし、コントローラーとビューのみを管理名前空間内に配置したいと考えています。
どうすればそれを回避できますか?
Rails 3 の scaffold ジェネレーターは、モデル クラスを名前空間内に配置します。例:
rails generate scaffold admin/portfolio
ただし、コントローラーとビューのみを管理名前空間内に配置したいと考えています。
どうすればそれを回避できますか?
rails generate model Portfolio
rails generate controller Admin::Portfolios
@RubyDev が Ryan Bate のNifty Generatorsを提案したのは正しかったのですが、彼が --skip-model オプションを使用するように言った理由はわかりません。
気の利いたジェネレーターは、実際にあなたが求めていることを正確に実行します。Gemfile に追加するだけです。
gem "nifty-generators"
そして実行します:
rails g nifty:scaffold Admin::Portfolio name:string
これにより、通常のスキャフォールドでコントローラーとビューが「admin」名前空間に作成されますが、モデルは名前空間に作成されません。
@ tybro0103 に従って更新
nifty:generators を使用する: https://github.com/ryanb/nifty-generators
rails generate nifty:scaffold Admin::Portfolio
名前空間を使用せずにモデルまたはスキャフォールドを既に生成しており、admin 名前空間に対して再度実行したい場合は、モデルをスキップできます。
rails generate nifty:scaffold Admin::Portfolio --skip-model
scaffold にすべてのフィールドを含むビューを生成させたい場合は、フィールド名をもう一度入力してください。
rails generate nifty:scaffold portfolio name:string
rails generate nifty:scaffold Admin::portfolio name:string --skip-model
私は通常、2 つを一緒に行うので、前のコマンドに移動して編集し、Admin:: と --skip-model を追加するだけで簡単に実行できます。
少し前までは気の利いたジェネレーターが正しかったのですが、Rails 4 がリリースされた今では時代遅れになっています。名前空間のないモデルで管理スキャフォールディングを生成したい場合は、rails-admin-scaffold gem を使用できます。
最善の解決策
rails generate scaffold admin/theme name:string active:integer position:integer --migration=false
rails generate migration CreateTheme name:string active:integer position:integer
# add t.timestamps in migration
したがって、テーブルにプレフィックスは生成されません