2014年7月10日木曜日

scaffoldとモデル名の関係

 scaffoldに複数形の引数(モデル名)を突っ込むとどうなるのか試した。別になんてことは無いけど気になって。
 まずはeggと単数形で。
~/work/meishi$rails g scaffold egg sex:integer
      invoke  active_record
      create    db/migrate/20140710062006_create_eggs.rb
      create    app/models/egg.rb
      invoke  resource_route
       route    resources :eggs
      invoke  scaffold_controller
      create    app/controllers/eggs_controller.rb
      invoke    haml
      create      app/views/eggs
      create      app/views/eggs/index.html.haml
      create      app/views/eggs/edit.html.haml
      create      app/views/eggs/show.html.haml
      create      app/views/eggs/new.html.haml
      create      app/views/eggs/_form.html.haml
      invoke    helper
      create      app/helpers/eggs_helper.rb
      invoke    jbuilder
      create      app/views/eggs/index.json.jbuilder
      create      app/views/eggs/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/eggs.js.coffee
      invoke    scss
      create      app/assets/stylesheets/eggs.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

 次は複数形eggs。
~/work/meishi$rails g scaffold eggs sex:integer
Plural version of the model detected, using singularized version. Override with --force-plural.
      invoke  active_record
      create    db/migrate/20140710062649_create_eggs.rb
      create    app/models/egg.rb
      invoke  resource_route
       route    resources :eggs
      invoke  scaffold_controller
      create    app/controllers/eggs_controller.rb
      invoke    haml
      create      app/views/eggs
      create      app/views/eggs/index.html.haml
      create      app/views/eggs/edit.html.haml
      create      app/views/eggs/show.html.haml
      create      app/views/eggs/new.html.haml
      create      app/views/eggs/_form.html.haml
      invoke    helper
      create      app/helpers/eggs_helper.rb
      invoke    jbuilder
      create      app/views/eggs/index.json.jbuilder
      create      app/views/eggs/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/eggs.js.coffee
      invoke    scss
      create      app/assets/stylesheets/eggs.css.scss
      invoke  scss
   identical    app/assets/stylesheets/scaffolds.css.scss
 結果は同じでした。でも、複数形の場合は、モデルのテーブル名が複数形なのはおかしいから直したよ的なメッセージが入っています。オプション入れればこの辺りは強制的に指定できるみたい。

 コントローラのみの場合は下記の通りどちらでも指定通りに作られました。
~/work/meishi$rails g controller egg show
      create  app/controllers/egg_controller.rb
       route  get 'egg/show'
      invoke  haml
      create    app/views/egg
      create    app/views/egg/show.html.haml
      invoke  helper
      create    app/helpers/egg_helper.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/egg.js.coffee
      invoke    scss
      create      app/assets/stylesheets/egg.css.scss
~/work/meishi$rails g controller eggs show
      create  app/controllers/eggs_controller.rb
       route  get 'eggs/show'
      invoke  haml
      create    app/views/eggs
      create    app/views/eggs/show.html.haml
      invoke  helper
      create    app/helpers/eggs_helper.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/eggs.js.coffee
      invoke    scss
      create      app/assets/stylesheets/eggs.css.scss

 モデルの場合も、モデル単独でのgenerateでは指示通りに作られました。
~/work/meishi$rails g model egg sex:integer
      invoke  active_record
      create    db/migrate/20140710064223_create_eggs.rb
      create    app/models/egg.rb
~/work/meishi$rails g model eggs sex:integer
      invoke  active_record
      create    db/migrate/20140710064003_create_eggs.rb
      create    app/models/eggs.rb
 コントローラ名はモデルと一緒に使われる場合は複数形。モデルを伴わない場合は単数。
 モデル名はテーブルの名前でもあるから、これ自体は基本的に単数。
 scaffoldは上を両方とも同時に作るんだけど、引数としては単数が普通。必要な部分は勝手に複数形になる。

 ふーん。

 あ、本当はモデル名は大文字で書き始めないといけないんだっけ。単語が複数の場合はStampCollectionとか。くっつけて。そうじゃないとアンダースコア付きのファイル名で生成されない。まぁ、次から気をつけます。

0 件のコメント:

コメントを投稿