More Related Content
Similar to Next-L Enju 開発WS #03 Ruby on Railsの使い方
Similar to Next-L Enju 開発WS #03 Ruby on Railsの使い方 (20)
More from Kosuke Tanabe (20)
Next-L Enju 開発WS #03 Ruby on Railsの使い方
- 1. Ruby on Railsの基本的な使い方
田辺浩介
1. はじめに
Ruby on RailsはWebアプリケーションを手軽に作成するためのフ
レームワークです。 Next-L EnjuはRailsの規則に従って作成されて
いるため、Railsのサンプルアプリケーションを 作成することに
よって、Enjuのおおまかな構成を把握することができます。
2. サンプルアプリケーションを作る
掲示板アプリケーションを作ってみましょう。以下のコマンドで新
しいアプリケーショ ンを作ります。
$ cd
$ rails new bbs
アプリケーションのディレクトリに移動します。
$ cd bbs
掲示板は以下の項目を持つとします。
項目名 データ型
username(投稿者名) string(255文字までの文字列)
email(メールアドレス) string(255文字までの文字列)
body(本文) text(255文字以上の文字列)
score(評価) integer(整数)
- 2. 3. アプリケーションのひな形の作成
以下のコマンドを実行します。ここでは掲示板のデータモデルの名
前をPostとします。
$ rails generate scaffold Post username:string email:string
body:text score:integer
以下のディレクトリとファイルが作成されます(主要なものだけを
表示)。
Gemfile
app/controllers/posts_controller.rb
app/models/post.rb
app/views/posts/index.html.erb
app/views/posts/show.html.erb
app/views/posts/new.html.erb
app/views/posts/edit.html.erb
app/views/posts/_form.html.erb
db/migrates/20101016171302_create_posts.rb (数字の部分
は環境によって変化)
public/stylesheets/scaffold.css
ページ送り処理のためのライブラリを読み込むように指示します。
Gemfileに以下の行 を追加した後、
gem 'will_paginate'
以下のコマンドを実行して、ライブラリを用意します。
$ bundle update
- 5. データの取得
保存したデータをすべて取得するには、allメソッドを使用します。
> posts = Post.all
allメソッドではデータの配列が返ってきますので、これをeachな
どを使用して取り出します。
> posts.each do ¦post¦
puts post.username
end
Webアプリケーションの場合、画面1ページごとに表示件数を限定
してデータを取得する 必要があります。たとえば、1ページあたり
5件取得することとし、その2ページ目のデー タを取得するには、
以下のようにpaginateメソッドを使用します。
> posts = Post.paginate(:page => 2, :per_page => 5)
保存したデータを1件だけ取得するには、findメソッドを使用しま
す。以下のようにidを指定して取り出します。
> post = Post.find(1)
> post.username # usernameだけを取り出す
> post.body # bodyだけを取り出す
条件を指定してデータを取得するには、where を使用します。
# usernameがtanabeとなっているデータをすべて取得。配列が
返ってくる
> posts = Post.where(:username => tanabe )
# usernameがtanabeとなっているデータを最初の1件だけ取得
> post = Post.where(:username => tanabe ).first
- 7. ここまでのActiveRecordの使い方をまとめてみます。
動作 書き方
データ全件を取得 posts = Post.all
する
1ページ目のデー posts = Post.paginate(:page => 1)
タをすべて取得す
る
idが15のデータを post = Post.find(15)
取得する
username posts = Post.where(:username => ʻtanabeʼ)
が tanabe のデー
タをすべて 取得す
る
username post = Post.where(:username => ʻtanabeʼ).first
が tanabe のデー
タを1件だ け取得
する
データを作成する post = Post.create(:username =>
(1) ʻtanabeʼ, :body => ʻこんにちはʼ)
データを作成する post = Post.new(:username => ʻtanabeʼ, :body
(2) => ʻこんにちはʼ)
post.save
データを更新する post = Post.find(15)
(1) post.update_attributes({:username =>
ʻkosukeʼ})
データを更新する post = Post.find(15)
(2) post.username = ʻkosukeʼ
post.save
データを削除する post = Post.find(15)
post.destroy