##ActiveRecordとは##
DBには様々な種類があり、MySQL、PostgreSQL、SQLite、SQL Server、Oracleなどが良く使われています。
DBによって記述のルールが違うため、それに伴って学習コストが高くなる可能性があります。
ActiveRecordを用いるとRuby言語でDBの操作が可能になり、SQL等よりも短いコードでDBを呼び出す(追加)ことが可能です。
##命名規則について##
ActiveRecordはクラス名に関する命名規約があります
例えば、クラス名がBookの場合、booksというテーブルで対応します。
Railsでは、開発者が名付けたモデルクラス名を複数形にしDBのテーブルを探してくれます。
##ActiveRecordメソッド##
まずは下準備として、Railsアプリ(blog_app)を作成
rails new blog_app -d postgresql
rails db:create
rails db:migrate
rails c
メソッド一覧
createメソッド(レコードの新規作成)
Blog.create(title: 'タイトルA', content: '内容A'))
newメソッド(モデルオブジェクトをインスタンス化)
@blog = Blog.new(title: 'タイトルB', content: '内容B')
findメソッド(idを引数にし、そのレコードをオブジェクトとして取得)
Blog.find(3)
updateメソッド(レコードを更新)
@blog = Blog.find(2)
@blog.update(title: 'タイトルBB')
destroyメソッド(レコードを削除)
@blog = Blog.find(1)
@blog.destroy
allメソッド(テーブル内の全レコードを取得)
Blog.all
firstメソッド(テーブルの最初のレコードを取得)
Blog.first
lastメソッド(テーブルの最後のレコードを取得)
Blog.last
whereメソッド(引数に条件を指定し、それに合ったレコードを取得)
Blog.where(title: 'タイトルD')
find_byメソッド(引数に指定した条件に最初に一致するレコードを取得)
Blog.find_by(title: 'タイトルD')
orderメソッド(レコードを並び替えを行う)
Blog.order(content: :desc)
where.notメソッド(whereメソッドの後ろに.notをつけることで引数に指定した条件に合致しないレコードを取得)
Blog.where.not(title: 'タイトルD')
orメソッド(2つのOR条件でレコードを取得したいときに使用する)
Blog.where(title: "タイトルA").or(Blog.where(title: "タイトルE"))
selectメソッド(引数にカラム名を指定することで特定のカラムのみの情報を取り出すことができる)
Blog.select("id", "title")
limitメソッド(取得するレコード数を制限)
Blog.limit(3)
offsetメソッド(limitメソッドと合わせて使用し、引数に指定した数のレコード分をスキップしてその次のレコードから取得できます。以下の例では、7レコード目から4レコード分取得)
Blog.limit(4).offset(6)
##メソッドチェイン##
whereメソッドやorderメソッドは下記のようにメソッドチェインを構成できます。
以下の例ではtitleがタイトルAのレコードを作成日が新しい順で5レコード取得しています。
Blog.where(title: 'タイトルB').order(created_at: :desc).limit(5)
groupメソッド(引数で指定したカラムの値が同一のものをグループ化)
Blog.group(:title).count
havingメソッド(groupメソッドでグループ化された対象に条件を付与できます。
以下の例では、レコード数が5より多いタイトルのレコード数のみを出力)
Blog.group(:title).having('COUNT(*) > 5').count
##ActiveRecordのメソッド公式##