DB2でさくさく実現するRESTfulなDBアプリ(1)
RailsアプリからDB2にアクセスするための基礎知識
ユーザー表へのカラムの追加
ActiveScaffoldは、その名のとおり、動的にアプリケーションを作成し実行します。データベースの表にカラムを追加すると、アプリケーションの修正なしで反映されます。
ここでは、それを確認するため、ユーザー表に振り仮名を格納するstring型のkanaというカラムを追加します。
カラム追加用スクリプトとデータベースへの反映
カラムの追加は、migrationコマンドを使用してリスト10のように行います。スクリプトができたら、rakeコマンドででデータベースへ反映します。
C:\demo>ruby script\generate migration add_kana_to_users kana:string exists db/migrate create db/migrate/002_add_kana_to_users.rb C:\demo>rake db:migrate (in C:/ruby/demo) == 2 AddKanaToUser: migrating ================================================= -- add_column(:users, :kana, :string) -> 0.0940s == 2 AddKanaToUser: migrated (0.0940s) ======================================== C:\demo>
Webサーバを立ち上げ直す必要も、アプリケーションを修正する必要もなく、Webブラウザを再読み込みすると、画面にkana項目が追加されることが確認できます(図2)。scaffoldなどの静的なアプリケーションでは、このように動的に変更することはできません。
関連付けの作成
2つの表の関連付けを定義することにより、それぞれの保守アプリケーションもリンクされます。組織のデータを持つ表を作成し、先ほど作成したユーザー表との関連付けを定義します。
組織表の作成とユーザー表の修正
ユーザー表と同様に組織表(org)を作成します(リスト11)。
C:\demo>ruby script\generate model org name:string exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/org.rb create test/unit/org_test.rb create test/fixtures/orgs.yml exists db/migrate create db/migrate/003_create_orgs.rb C:\demo>
ユーザーに組織の情報を持たせたいので、ユーザー表にorg_idを追加します(リスト12)。
C:\demo>ruby script\generate migration add_org_id_to_users org_id:integer exists db/migrate create db/migrate/004_add_org_id_to_users.rb C:\demo>
リスト12までの作業が済んだら、rakeを使ってデータベースへ反映させます(リスト13)。
C:\demo>rake db:migrate (in C:/ruby/demo) == 3 CreateOrgs: migrating ==================================================== -- create_table(:orgs) -> 0.0780s == 3 CreateOrgs: migrated (0.0780s) =========================================== == 4 AddOrgIdToUser: migrating ================================================ -- add_column(:users, :org_id, :integer) -> 0.0160s == 4 AddOrgIdToUser: migrated (0.0160s) ======================================= C:\demo>
組織コントローラの作成
ここからは、組織のコントローラを作成します。ユーザーのコントローラをコピーして作成すると簡単です。サンプル3の内容を記述したファイルをapp\controllersディレクトリ配下にorgs_controller.rbという名前で保存します。
class OrgsController < ApplicationController active_scaffold :org layout "activescaffold" end
関連付けの追加
関連付けを追加します。関連付けは、has_many、belongs_toを使用します。組織から見てユーザーは1対多なので、has_manyを指定し、ユーザーはどこかの組織に属するので、belongs_toを指定します(図3)。
具体的には、app\modelsの表名.rbのファイルに定義します(サンプル4、5)。
class Org < ActiveRecord::Base has_many :users end
class User < ActiveRecord::Base belongs_to :org end
アプリケーションの実行・動作の確認
アプリケーションを実行します。Webブラウザから「http://localhost:3000/Orgs/list」にアクセスすると、組織の情報が見られますが、その組織に所属するユーザーの情報も見ることが可能です。また、そのユーザーを展開することで、ユーザーの詳細情報の表示も可能です。適当なデータを入れて実行すると図4〜6のように表示されます。
3/4 |
RailsアプリからDB2にアクセスするための基礎知識
DB2 9.5の無償版 Express-Cを導入|Ruby実行環境を整える|Railsの導入|ibm_dbドライバもパッケージから導入できる|データベースの作成
・プロジェクトの作成と設定
プロジェクトの作成|データベース接続の設定
ActiveScaffoldプラグインの導入|モデルの作成とテーブルの作成|コントローラの作成|標準レイアウトの追加|サーバの起動と動作確認
カラム追加用スクリプトとデータベースへの反映|関連付けの作成|組織表の作成とユーザー表の修正
・組織コントローラの作成
関連付けの追加
・アプリケーションの実行・動作の確認
・次回、実践編は……
DB2でさくさく実現するRESTfulなDBアプリ |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|