2013-04-28 17:21

Modelクラスに属性を設定する

自動生成されたファイルの確認

rails generate modelで自動生成したModelクラスに属性を設定していきます。
rails generate modelに関してはこちらを ⇒ Modelクラスの自動生成

ターミナル
$ rails generate model article

こんな感じでArticleという名前のModelクラスを生成してみる。

すると、、

app/models/article.rb
class Article < ActiveRecord::Base
  # attr_accessible :title, :body
end

db/migrate/##############_create_article.rb
class CreateArticles < ActiveRecord::Migration
  def change
    create_table :articles do |t|

      t.timestamps
    end
  end
end

の2つのRubyのコードが生成されているのが確認できる(これ以外にもテスト用のファイルが生成される)。

※ファイル名の##############の部分には生成日時を表す数値が入ります。

マイグレーションファイルを記述する

上で確認した2つ目のファイル(マイグレーションファイルと呼びます)に属性の情報(DBのカラム属性)を書き加えてみましょう。

とりあえず、

string型のtitle
text型のbody
datetime型のposted_at

の3つの属性を追加してみる。
データ型についてはこちら ⇒ マイグレーションのデータ型

db/migrate/##############_create_article.rb
class CreateArticles < ActiveRecord::Migration
  def change
    create_table :articles do |t|
# ここから追加=====================
      t.string :title
      t.text :body
      t.datetime :posted_at
# ここまで追加=====================
      t.timestamps
    end
  end
end

※「#」から始まる行はコメントなので実際には記述しなくてよし。

で、マイグレーションファイルを修正したら「db:migrate」しておきます。

ターミナル
$ rake db:migrate
==  CreateArticles: migrating ==============================================
-- create_table(:articles)
   -> 0.0034s
==  CreateArticles: migrated (0.0035s) ========================================

これによって修正した内容でテーブルが更新されました。

Articleモデルの修正

Railsでは、セキュリティ上の理由から、テーブルの属性をハッシュ(参照配列のようなもの)で送信する場合は「attr_accessible」にカラム名を渡してあげる必要がある。

app/models/article.rb
class Article < ActiveRecord::Base
# ここから修正=====================
  attr_accessible :title, :body, :posted_at
# ここまで修正=====================
end

こんな風に修正しておきましょう。

ここで作成したModelの他に、View、Controllerの作成とroute設定が済んでいればブラウザで確認できます。
Viewの作成がまだなら ⇒ アプリケーション共通のレイアウトを作成する
Controllerの作成がまだなら ⇒ Controllerクラスの生成