Active Recordとは
MVCのM、モデル部分を扱うものでDBのデータを参照したり、編集するのに用いる。SQLをわざわざ書く必要なくDBの操作ができる。SQLは色々な文法があるがコレのお陰でそれらの違いを内包してくれる。
Rails5からActive Recordのclassの作り方が変わる
Rails4まではActiveRecord::Baseを継承していたが5からはApplicationRecordを継承するようになった。基本的には変わらないがActiveRecord::Baseはactiverecord gemのクラスなのに対して、AplicationControllerはアプリケーションに用意されたもの。そのため、「全コントローラーに共通する処理」を、自分でAplicationControllerに置くことができます。一方で、ActiveRecord::Baseはあまり共通する処理を置く場所がありません。
Active Recordの使い方
基本的には
- コマンドでrails g modelでmodelとDBを作ってしまう。
- modelはDBの名前から命名する→モデル:最初大文字、DB:最初小文字にして複数形
- 情報を取ってくるときはPost.nameなどのようにクラス名.カラム名で引っ張ってくる。
a = Part.new
a.name = "Sample part"
a.price = 123.45
a.save
上記のコードは与えられた値で新しい行をデータベースに作る。これは次の SQL コマンドにほぼ等価である。
INSERT INTO parts (name, price) VALUES ('Sample part', 123.45);
引用:https://ja.wikipedia.org/wiki/Active_Record
スキーマのルール
カラム名について
外部キー
このカラムは テーブル名の単数形_id にする必要があります (例 item_id、order_id)これらのカラムは、Active Recordがモデル間の関連付けを作成するときに参照されます。
主キー
デフォルトでは id という名前を持つintegerのカラムをテーブルの主キーとして使用します。このカラムは、Active Recordマイグレーションを使用してテーブルを作成するときに自動的に作成されます。
ActiveRecordを使う上で把握したい概念
ORM(O/Rマッピング)
SQLを意識しなくてもかけるようにするものでオブジェクトとDBをつなぐもの。
CoC(Convention over Configuration)
設定より規約のrailsの精神がここにも生きていて、それぞれのアプリケーションの設定で動くのではなくて規約に従う。なので命名規則などは勝手にできないようになっている。