Railsを学習する際に、よく使われるメソッドを知っておくと開発がスムーズに進みます。今回はRails初心者の方向けに、現場でよく利用されるメソッドをサンプルコードとともにまとめました。
1. find と find_by
ActiveRecordを使用して、DBからデータを取得する際によく使います。
- find: 主キーを利用して1件のデータを取得します。
user = User.find(1)
user = User.find_by(email: 'example@example.com')
現場でのシーン: 特定のユーザーや商品情報を取得する際に利用します。
2. where
複数のレコードを条件付きで取得したい場合に使用します。
users = User.where(active: true)
現場でのシーン: 特定の条件に合致するレコードを一括で取得する際に利用します。例: 未読メッセージを全て取得、在庫がある商品をリストアップなど。
3. pluck
指定したカラムの値だけを配列で取得します。
names = User.pluck(:name)
現場でのシーン: 特定のカラムの情報だけが必要な際に利用します。例: ユーザーの名前リストを作成する時など。
4. exists?
指定した条件のレコードが存在するかどうかを確認します。
is_exist = User.exists?(email: 'example@example.com')
現場でのシーン: 既に同じメールアドレスのユーザーが存在するか確認する際などに利用します。
5. update
データを更新します。
user = User.find(1)
user.update(name: '新しい名前')
現場でのシーン: ユーザー情報の変更、商品情報の更新など、データを修正する際に利用します。
6. destroy と destroy_all
データを削除します。
- destroy: 1件のデータを削除します。
user = User.find(1)
user.destroy
User.where(active: false).destroy_all
現場でのシーン: 不要なデータを削除する際、特にテストデータのクリアなどに利用します。
7. all
全てのレコードを取得します。
users = User.all
現場でのシーン: 全データの一覧が必要な際、例えば管理画面で全ユーザーを表示する場面など。
8. first と last
- first: 最初のレコードを取得します。
user = User.first
user = User.last
現場でのシーン: データが正しく保存されているかの確認、最新の投稿を取得する場面など。
9. create
新しいレコードを作成して保存します。
user = User.create(name: 'Taro', email: 'taro@example.com')
現場でのシーン: 新しいデータの登録。
10. new と save
新しいレコードをインスタンスとして作成し、それを保存します。
user = User.new(name: 'Jiro')
user.save
現場でのシーン: データのバリデーションを確認した後に保存する場合など。
11. count
レコードの数をカウントします。
total_users = User.count
現場でのシーン: データの総数を確認する場面。
12. select
指定したカラムのデータだけを取得します。
users = User.select(:name, :email)
現場でのシーン: 特定の情報だけが必要な場面。
13. order
指定したカラムでソートして取得します。
users = User.order(:created_at)
現場でのシーン: 新着順、古い順など、データを特定の順番で取得する場面。
14. limit と offset
指定した数だけレコードを取得したり、指定した数だけスキップしてからレコードを取得します。
users = User.limit(5).offset(10)
現場でのシーン: ページネーションの実装など、一部のデータのみを取得する場面。
15. joins
関連付けられたテーブルとの結合を行います。
posts = Post.joins(:user).where(users: { active: true })
現場でのシーン: 2つ以上のテーブル間でデータを関連付けて取得する場面。
16. group と having
指定したカラムでグループ化し、指定した条件で絞り込みます。
User.group(:account_type).having("count(id) > ?", 5)
現場でのシーン: 特定の条件に合致するグループのデータを取得する場面。
17. includes
N+1問題を防ぐために、関連テーブルのデータもあらかじめ取得します。
posts = Post.includes(:comments)
現場でのシーン: パフォーマンス向上のために、関連データも一緒に取得する場面。
18. validates
モデルにバリデーションを追加します。
class User < ApplicationRecord
validates :name, presence: true, length: { maximum: 50 }
end
現場でのシーン: データの整合性を保つため、特定の条件下でのみデータを保存する場面。
19. has_many と belongs_to
モデル間の関連付けを行います。
class User < ApplicationRecord
has_many :posts
end
class Post < ApplicationRecord
belongs_to :user
end
現場でのシーン: モデル間でのデータの関連付けを必要とする場面。
これらのメソッドは日常的なRailsの開発で頻繁に使われるものばかりですので、ぜひ実際に手を動かして慣れていきましょう!
コメント