2007年09月09日

Ruby on RailsをEclipseでいこう その6 〜規約外テーブルへのscaffoldの巻〜

複数形テーブル名規約をはずして、scaffoldしてみます。

DBテーブルは以下のものを準備します。
CREATE TABLE `ruby`.`item` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`url` VARCHAR(255) NOT NULL,
`title` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE = MyISAM;

先ずは、/config/environment.rbの末尾に以下の行を追加します。
(# Include your application configuration below の下)
ActiveRecord::Base.pluralize_table_names = false

さらにEclipseの右下にあるRailsビューの「ジェネレータ」タブを開きます。

上の画像のように「model」を選択して、「Item」と入力して実行ボタンをクリックします。

生成された/models/item.rbを開いて以下のように変更します。

class Item < ActiveRecord::Base
set_table_name "item" # ←この行を追加
end


さらにさらにEclipseの右下にあるRailsビューの「ジェネレータ」タブを開きます。

ruby_eclipse_pluralize_false02.jpg

上の画像のように「scaffold」を選択して、「Item Item」と入力して実行ボタンをクリックします。
※Usage : scaffold テーブル名 [コントローラ名]
テーブル名内に大文字があると、自動的にアンダースコア("_")が挿入されてしまうので注意です。
→ "SampleTable" は "sample_table"として扱われる。

いつものようにWEBrickで確認しましょう(http://localhost:3000/item)←実際は全部半角小文字

これで、規約外(テーブル名が複数形でない)のDBテーブルに対するCRUDアプリが自動生成できます。

Web上では、scaffoldは既存のmodelを読み込まない障害があるという情報もありましたが、現在では解決しているようですね勘違いでした。scaffoldは、modelの中を見ていません。scaffoldの引数で渡される「テーブル名」でDBから情報を引っ張ります(2007/09/10)。
猫
posted by 台北猫々 at 08:55| Comment(0) | TrackBack(0) | 技術メモ(Ruby)
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/5372189

この記事へのトラックバック