LoginSignup
1
0

More than 3 years have passed since last update.

ActiveRecordにはどんな種類があるのか?書き方は?

Posted at

ActiveRecordとは

人間で言う「脳みそ」のようなものです。勉強し始めた頃、私はこのように覚えました(笑)データベースへ指示を送るメソッドの総称のことをいい、一つ一つのコードはコントローラーへ記述します。少し難しく言うと、ruby on railsでよく使われるORMの1つです。ORM(Object Relational Mapping)とはオブジェクト指向の言語でオブジェクトとして使うために変換してくれるものです。ActiveRecordのメソッドを使うことで、データベースのレコードからデータを取り出してくれたり、レコードへ新しいデータを追加することができます。よく使うActiveRecordのメソッドの種類と書き方をまとめてみました。
間違いやもっと良い書き方があれば、教えてください!

種類と書き方

今回は「title」と言う名前のモデルがあるとして、コードの書き方を説明します。

all 全てのデータを受け取る

Title.all

find ある1つのデータを受け取る

Title.find(取得したいテーブルの数字)
ex) Title.find(3)
#Titleモデルのtitlesテーブルの3番目の値を受け取る

new インスタンスを生成する

Title.new

save インスタンスを保存する

Title.save

order 並び順には2種類あり、それらを使って並び順を変更する
asc→小さいものから大きいもの、古いものから新しいもの(昇順)
desc→上の逆の並び(降順)

Title.order("カラム名 並び順")
ex) Title.order("name ASC")
#nameカラムを古いものから並べて、受け取る

where 条件に一致したテーブルを配列で受け取る

Title.where('カラムを含ませた条件式')
ex) Title.where('name > 5')
#5より大きいnameカラムを受け取る
Title.where('id: 1')
#idが1のテーブルを受け取る

create テーブルにレコードを保存する

Title.create(カラム名: 保存する値)
ex) Title.create(name: params[:first])
#nameカラムにfirstと送られてきたparamsを保存する

includes 関連するモデルを一度にまとめて受け取ることができる
allと似ているがallで受け取る場合、アソシエーションがある時に受け取る回数が多くなってしまい、N+1問題が発生する。その時にincludesを使うことで一度のアクセスだけで多くのデータを受け取ることができるためN+1問題を解決してくれる。

Title.includes(:モデル名)
ex) Title.includes(:name)
#nameモデルが関連するモデル情報をまとめて受け取る

以上で紹介を終わります。一覧はこちらです。ぜひ参考にしてみてください!
rails ガイド

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0