1
1

【ActiveRecord】find・find_by・whereの違いと主要メソッド

Last updated at Posted at 2023-11-24

【ActiveRecord】find・find_by・whereの違いと主要メソッド

Ruby on Railsの強力な機能の一つであるActiveRecordは、データベースの操作を簡単かつ効率的にするORM(Object-Relational Mapping)システムです。この記事では、ActiveRecordの基本的な使い方、特にfindfind_bywhereメソッドの違いに注目し、New、Create、Update、Delete、Saveといった主要メソッドの概要を解説します。

ActiveRecordの概要

ActiveRecordは、Ruby on RailsのMVCモデルの中でモデル層を担当し、データベースとの間でデータをやり取りする役割を果たします。SQLを直接書く代わりに、Rubyのメソッドを使用してデータベースを操作することができます。これにより、コードの可読性が向上し、データベース操作が容易になります。

find・find_by・whereの違い

findメソッド

findメソッドは主にIDに基づいてレコードを検索し、見つかったレコードを返します。見つからない場合はActiveRecord::RecordNotFoundエラーが発生します。

User.find(1) # IDが1のUserレコードを検索

find_byメソッド

find_byメソッドは、指定した条件に一致する最初のレコードを返します。該当するレコードがない場合はnilを返します。

User.find_by(name: 'Alice') # 名前がAliceの最初のUserレコードを検索

whereメソッド

whereメソッドは、指定した条件に一致するすべてのレコードをActiveRecord::Relationオブジェクトとして返します。これにより、さらにクエリを連鎖させることが可能です。

User.where(age: 20) # 年齢が20のすべてのUserレコードを検索

New、Create、Update、Delete、Saveの概要

Newメソッド

newメソッドは新しいレコードをメモリ上に作成しますが、データベースには保存しません。

user = User.new(name: 'Bob', age: 25) # 新しいUserインスタンスを生成

Createメソッド

createメソッドは新しいレコードを作成し、データベースに保存します。

User.create(name: 'Bob', age: 25) # 新しいUserレコードを作成して保存

Updateメソッド

updateメソッドは既存のレコードを更新します。

user = User.find(1)
user.update(age: 26) # IDが1のUserレコードの年齢を26に更新

Deleteメソッド

deleteメソッドは指定されたIDのレコードをデータベースから削除します。

User.delete(1) # IDが1のUserレコードを削除

Saveメソッド

saveメソッドは新しいレコードをデータベースに保存するか、既存のレコードを更新します。

user = User.new(name: 'Charlie', age: 30)
user.save # 新しいUserレコードを保存

まとめ

ActiveRecordを使いこなすことで、Ruby on Railsにおけるデータベース操作が大幅に簡単になります。

findfind_bywhereのような検索メソッドや、createupdatedeleteなどのデータ操作メソッドを適切に使い分けることで、アプリケーションの効率的な開発が可能になります。

1
1
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
1