Modelによるデータベースアクセスの基本 (1/4)
作成:2012-02-13 07:42
更新:2012-02-16 15:36
更新:2012-02-16 15:36
■IDによるデータの検索
では、前回作成したHeloモデルクラスを利用してデータベースアクセスを行なっていきましょう。データベースへのアクセスと一口に言ってもさまざまなものがありますが、もっとも基本といえるのは以下のようなものになるでしょう。
・全データの一覧表示(Read。これは前回やりました)
・特定データの検索(もっともシンプルなIDによる検索)
・新規データの作成(Create)
・既にあるデータの編集更新(Update)
・既にあるデータの削除(Delete)
これらの基本操作は、それぞれの操作(Create、Read、Update、Delete)のイニシャルから「CRUD」と呼ばれます。まずはこのCRUDをしっかりマスターしましょう。これらの処理の仕方がわかれば、とりあえずデータベースを扱う上で必要最低限の機能が実装できることになります。その上で、後はそれぞれのWebアプリに必要な具体的な検索などの処理を考えていけばよいわけです。
では、まず「IDによるデータの検索」から作成しましょう。前回、全データを取得する処理はやりましたね。「all」というメソッドを呼び出すだけでした。こんな感じです。
では、実際の利用例を作成してみましょう。ここでは、「show」というアクションとして作成をしてみます。idというパラメータをつけて送信すると、そのIDのデータを表示する、そういうアクションです。例によって、@titleと@header_contentは、以前作成したオリジナルレイアウトの表示用のものですので、レイアウトを使わないのであれば不要です。
ここでは、以下のようにして、送られてきたIDパラメータを元にデータを検索しています。
・全データの一覧表示(Read。これは前回やりました)
・特定データの検索(もっともシンプルなIDによる検索)
・新規データの作成(Create)
・既にあるデータの編集更新(Update)
・既にあるデータの削除(Delete)
これらの基本操作は、それぞれの操作(Create、Read、Update、Delete)のイニシャルから「CRUD」と呼ばれます。まずはこのCRUDをしっかりマスターしましょう。これらの処理の仕方がわかれば、とりあえずデータベースを扱う上で必要最低限の機能が実装できることになります。その上で、後はそれぞれのWebアプリに必要な具体的な検索などの処理を考えていけばよいわけです。
では、まず「IDによるデータの検索」から作成しましょう。前回、全データを取得する処理はやりましたね。「all」というメソッドを呼び出すだけでした。こんな感じです。
変数 = 《Model》.allこれで、全データを配列として取得することが出来ました。では、「特定のIDのデータだけをとり出す」というのは? まぁ、allで全部を取り出してIDを調べていくという手もありますが、普通はもっと簡単なやり方をします。
変数 = 《Model》.find( ID );たったこれだけです。引数に取り出したいIDを入れて「find」を呼び出せば、そのデータがModelインスタンスとして取り出せます。これまた、笑えるほど簡単ですね。
では、実際の利用例を作成してみましょう。ここでは、「show」というアクションとして作成をしてみます。idというパラメータをつけて送信すると、そのIDのデータを表示する、そういうアクションです。例によって、@titleと@header_contentは、以前作成したオリジナルレイアウトの表示用のものですので、レイアウトを使わないのであれば不要です。
ここでは、以下のようにして、送られてきたIDパラメータを元にデータを検索しています。
@helo = Helo.find(params['id'])これまた、実に単純。後はViewテンプレート側で、@heloのプロパティを書きだして表示するだけです。このあたりは既に前回、allで取り出したデータを表示するのにやりましたからわかるでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※show.html.erbのソースコード <p><%= @msg %></p> <hr> <table border="1"> <tr> <td>ID:</td> <td><%= @helo.id %></td> </tr> <tr> <td>TITLE:</td> <td><%= @helo.title %></td> </tr> <tr> <td>CONTENT:</td> <td><%= @helo.content %></td> </tr> </table> <br><br> <p> <a href="/helo/edit/<%= @helo.id %>">編集</a> |<a href="/helo/destroy/<%= @helo.id %>">削除</a> </p> ※showアクションメソッド def show @title = "サンプルレイアウト" @header_content = "データの表示" @msg = "指定のIDのデータを表示します。" @helo = Helo.find(params['id']) end
※関連コンテンツ