2010年1月25日月曜日

第17回 scaffoldでスケルトンを作成する

前回に引き続きRuby On Railsから、scaffoldによってスケルトンを作成してOracleDBに接続する。

  1. scaffoldによるスケルトンの作成は次の縛りがあるため、「scott」スキーマの「emp」テーブル名を利用して対象となるテーブルを作成する。
    • テーブル名は複数形である、つまり末尾に「s」が付いたものを単数形のクラスから使用する。
    • カラムの一つが「id」というカラム名があること。
    • 「id」はプライマリキーであること。
    • 「id」はテーブル名 + 「_seq」という名前のシーケンスでインクリメントされること。

    $ sqlplus scott/tiger@orcl
    SQL> create table emps as select * from emp;
    SQL> alter table emps rename column empno to id;
    SQL> alter table emps add constraint emps_pk primary key (id);
    SQL> select max(id)+1 from emps;

    MAX(ID)+1
    ----------
    7935
    SQL> create sequence emps_seq start with 7935;
    SQL> commit;
    SQL> quit

  2. Railプロジェクトをスキーマと同じく「scott」で作成した。後は次の手順のとおり。

    • Oracleアダプタを経由して「scott」スキーマに接続するように「database.yml」を編集する。
    • scaffold ではテーブル名末尾の「s」を取り、先頭文字を大文字にしたクラス名を指定してコードをジェネレートする。
    • WEBrickサーバーを立ち上げる。

    $ rails scott
    create
    create app/controllers
    ...
    create log/test.log
    $ cd scott

    vi config/database.yml

    development:
    adapter: oracle_enhanced
    database: localhost:1521/orcl
    username: scott
    password: tiger

    $ ruby script/generate scaffold Emp ename:string job:string mgr:integer hiredate:datetime sal:decimal comm:decimal deptno:integer
    create
    create app/controllers
    ...
    $ ruby script/server

  3. URLにhttp://server_addr:3000/empsを指定して作成したクラスを呼び出す。

0 件のコメント:

コメントを投稿