SuzuBlog

webのお勉強はじめたばかりの初心者。備忘録

Rails基礎③ モデルの作成

モデルの作成

$ rails generate model 名前 [カラム名:型] [オプション]

generateはgで省略することが出来るので、以下のようにも書ける

$ rails g model 名前 [カラム名:型] [オプション]
データ型
データ型 説明
string 文字列
text 長い文字列
integer 整数
float 浮動小数
decimal 精度の高い小数
datetime 日時
timestamp より細かい日時
time 時間
date 日付
binary バイナリデータ
boolean Boolean型
オプション
オプション 説明 デフォルト値
skip-namespace 名前空間をスキップする
old-style-hash 古いハッシュの形式を使う
-o, -orm=名前 使用するO/Rマッパー active_record
migration マイグレーションファイルを生成するか true
timestamps true
parent=名前
indexes true
-t, test-frameword=名前 使用するテストフレームワーク test_unit
fixtures フィクスチャを生成するか true
-r, fixture-replacement=名前 フィクスチャを変更
-f, force ファイルが存在する場合に上書き
-q, quiet 進捗状況を非表示
-p, pretend ドライラン
-s, skip 既に存在するファイルについてはスキップ
-h, help ヘルプを表示

 

例えば、タイトルと記事を持つブログアプリの場合

$ rails g model Post title:string body:text

また、モデルは個々のデータ構造を定義するため、名前を単数形にする

その後、データ構造を反映させるために

 $ rails db:migrate

を実行する。

データの格納

コンソールの起動
$ rails console

もしくは、省略記法を利用して

$ rails c
コンソールからデータを登録する

タイトル:title1、内容をbody1として登録したい場合、

コンソール上で

> p = Post.new(title: 'title 1', body: 'body 1') 
> p.save

と記述する。

Postは先程のモデルにつけた名前を指定。UserならUser.newとなる。

Post.new と p.save をわけずに、一度に書くことができる

> Post.create(title: 'title 2', body: 'body 2')

このように、SQLを発行しなくてもデータを格納できる仕組みを Active Record  という。

Active Recordとは

Railsが採用しているO/Rマッパーのこと。 Railsでは、テーブルごとに作成されたモデルクラスを通じてデータベースに接続する。

O/Rマッパーとは?

O/R(Object/Relational)マッピングの考えに基づいて実装されたライブラリ。 オブジェクト指向プログラミング言語からRDBにアクセスする際の架け橋となる仕組みのこと。 プログラミング言語で扱うクラス・オブジェクトとRDBで扱うテーブル同士のリレーションが異なる仕組みのため、 その違いを吸収するために考えられた。

Active Recordの主な機能
  • SQLを書かなくてもデータの検索、登録、更新、削除が出来る
  • RDBの関連付けをモデルクラスの関連付けとして表現することができる
  • データの検証機能を提供
コンソールを抜ける
> quit

とすれば、コンソールから抜けることができる。

モデルクラスとテーブルの命名ルール

モデルクラス名は単数形、テーブル名は複数形で表現すること。

2つ以上の単語を組み合わせたモデルクラスの場合、 テーブル名はアンダースコアで繋げた最後の単語を複数形とする決まり。

モデルクラス名 テーブル名
User users
UserItem user_items

テーブルのカラム名命名ルール

ActiveRecordでは、レコードを識別するためのカラムはデフォルトでidとなる。

ActiveRecordでテーブルを作成すると、自動的に追加される。

また、created_atupdated_atというカラムも同時に追加され、レコードの作成日時と更新日時が自動的に設定されるようになっている。

参考

railsdoc.com

いつもお世話になってます。