Ruby on Railsのデータベースとモデルクラス・MVCの対応関係

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

Windows環境での練習ではありますが、Ruby on Railsでユーザー・ログイン機能付きの旅行日記アプリケーションを制作してみた。
旅行日記のコメントとともに、行った場所(地名)を投稿でき、地名からYahoo地図情報APIを引っ張ってきて、地図を表示するというアプリ。
データベース絡むアプリだと、公開するにはセキュリティとかもう少し勉強が必要だろうなぁ。

Ruby on Railsは、WEBアプリケーション制作用のフレームワークです。
CRUD処理(Create, Read, Update, Delete:SQLのINSERT, SELECT, UPDATE, DELETEに相当)をメインとするようなWEBアプリケーションを、コーディング量が少なく書けるのが魅力と言われています。

RoRを使うと、生のSQL文を書く必要はほとんど無いので、この点はすごく楽。
生のSQL文の代わりに、ActiveRecord::Baseクラスのfindメソッド(クラスメソッド)を多用します。
ActiveRecord::Baseは、Railsのモデルクラスが継承するクラスで、データベースをオブジェクトとして扱い、DBのテーブル名(小文字の複数形)とモデルクラス名(先頭大文字の単数形)が対応する。

ActiveRecordの資料

Rubyist Magazine - RubyOnRails を使ってみる 【第 3 回】 ActiveRecord
Ruby on Rails - ActiveRecord - — ありえるえりあ
Active Record - Wikipedia
Class: ActiveRecord::Base
Rails' Wiki - ActiveRecord


RailsのDBのテーブル名は、原則的に小文字の複数形であり、モデルクラス名は、DBテーブル名を単数形にして、先頭文字を大文字にしたものとなります。
例を挙げると・・・

DBテーブル名: places
モデルクラス名: Place (place.rb)
コントローラークラス名: PlacesController (places_controller.rb)
ビューフォルダ名: places

という対応となります。()内は、ファイル名です。
モデルと共に、コントローラーとビューに関しても名前が対応するようになっています。
ビューに関しては、placesフォルダ以下に対応するメソッドのテンプレートができる。
places/index.html.erb, places/edit.html.erb など。

DBテーブルに対して操作を行う場合には、findメソッドを駆使するわけですが、実際に発行されるSQL文はどうなっているのだろうか・・・、SQLインジェクション対策は大丈夫だろうか・・・などの心配も多少あったので、実際にRailsアプリで発行されるSQL文を確認してみることにしました。

長くなったので、続きは次のページで。


日時: 2008年07月18日 12:58
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/432

この記事にトラックバックされる方は、参照先が分かるようにするために、「Ruby on Railsのデータベースとモデルクラス・MVCの対応関係」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - Ruby勉強ルーム