script/generate scaffold で生成されるもの。

$ script/generate scaffold Article Admin

で生成されたものたちが何か気になる。
generateの実行前のものとのdiffをとってみた。
(office.1 が実行前。office.2が実行後。)

$ diff -ur office.1 office.2
office.2/app/controllersだけに発見: admin_controller.rb
office.2/app/helpersだけに発見: admin_helper.rb
office.2/app/modelsだけに発見: article.rb
office.2/app/viewsだけに発見: admin
office.2/app/views/layoutsだけに発見: admin.rhtml
diff -ur office.1/log/development.log office.2/log/development.log
--- office.1/log/development.log        2003-05-28 03:30:41.000000000 +0900
+++ office.2/log/development.log        2003-05-28 04:24:54.000000000 +0900
@@ -0,0 +1,2 @@
+  SQL (0.000332)   SET SQL_AUTO_IS_NULL=0
+  Article Columns (0.003327)   SHOW FIELDS FROM articles
office.2/public/stylesheetsだけに発見: scaffold.css
office.2/test/fixturesだけに発見: articles.yml
office.2/test/functionalだけに発見: admin_controller_test.rb
office.2/test/unitだけに発見: article_test.rb

ほぅ、2つ目の引数で入れた Admin がコントローラやヘルパー、ビューの名前に使われて、Articleがモデルの名前に使われるのか。

generateの引数が1つだけ(Article)だけで、generate scaffold したものとも比較してみる。
(office.2が"scaffold Article Admin"。office.3が"scaffold Article")

$ diff -ur office.2 office.3
office.2/app/controllersだけに発見: admin_controller.rb
office.3/app/controllersだけに発見: articles_controller.rb
office.2/app/helpersだけに発見: admin_helper.rb
office.3/app/helpersだけに発見: articles_helper.rb
office.2/app/viewsだけに発見: admin
office.3/app/viewsだけに発見: articles
office.2/app/views/layoutsだけに発見: admin.rhtml
office.3/app/views/layoutsだけに発見: articles.rhtml
diff -ur office.2/log/development.log office.3/log/development.log
--- office.2/log/development.log        2003-05-28 04:24:54.000000000 +0900
+++ office.3/log/development.log        2003-05-28 04:27:28.000000000 +0900
@@ -1,2 +1,2 @@
-  SQL (0.000332)   SET SQL_AUTO_IS_NULL=0
-  Article Columns (0.003327)   SHOW FIELDS FROM articles
+  SQL (0.000331)   SET SQL_AUTO_IS_NULL=0
+  Article Columns (0.003310)   SHOW FIELDS FROM articles
office.2/test/functionalだけに発見: admin_controller_test.rb
office.3/test/functionalだけに発見: articles_controller_test.rb

"scaffold Article Admin"から変わったのは、、admin・・・ だったのが、articles・・・ になったこと。
前回と変わったファイルの名前は、単数のarticle でなく、articles と複数形になっているのが興味深い。

ちなみに、"scaffold Article Admin" となっていたのを小文字"scaffold article admin"としても、生成されるファイルは同じ。

とりあえずわかったのは、

  • モデルの名前は、テーブルの名前の単数形
  • モデル以外の名前は、テーブルの名前(複数形)
  • scaffold の2番目の引数は、モデル以外(コントローラやビュー)のファイルの名前になる。