Rails
ActiveRecord

RailsのActiveRecordについて

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などのようにクラス名.カラム名で引っ張ってくる。
rei
a = Part.new
a.name = "Sample part"
a.price = 123.45
a.save

上記のコードは与えられた値で新しい行をデータベースに作る。これは次の SQL コマンドにほぼ等価である。

rei
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の精神がここにも生きていて、それぞれのアプリケーションの設定で動くのではなくて規約に従う。なので命名規則などは勝手にできないようになっている。