【Ruby】all?メソッドで配列の要素が全ての条件を満たす場合を表現したい

はじめに

配列内の要素が特定の条件を満たすかどうかを判定する必要がある場面があると思います。そんな時に便利なのが、Rubyall? メソッドです。このメソッドは、配列内のすべての要素が指定した条件を満たすかどうかを一度に判定してくれます。この記事では、具体的な例を交えて all? メソッドの使い方を解説します。

all? メソッドの概要

all? メソッドは、Enumerable モジュールに含まれる便利なメソッドの一つです。このメソッドは、コレクション内の全ての要素に対して特定の条件を適用し、すべての要素が条件を満たす場合には true を、一つでも満たさない要素がある場合には false を返します。これにより、複数の要素に対し、条件を満たしているかどうかを素早く判定できます。

実際のコード例

例を通して、all? メソッドの活用方法を理解してみましょう。 ある教育系のサービスの中で教材が全て終わっているかどうか判定する例です。 以下のようにUser, Lesson, CompletedLessonモデルが存在し、UserのCompletedLessonがLessonに全て含まれているかをall?で判定します。

class User < ApplicationRecord
  has_many :completed_lessons
  has_many :lessons, through: :completed_lessons
end

class Lesson < ApplicationRecord
  has_many :completed_lessons
  has_many :users, through: :completed_lessons
end

class CompletedLesson < ApplicationRecord
  belongs_to :user
  belongs_to :lesson
end
# Userモデル内でメソッドを定義
class User < ApplicationRecord
  def all_lessons_completed?(user)
    all_lessons = Lesson.all
    completed_lessons = user.completed_lessons.pluck(:lesson_id)

    all_lessons.all? { |lesson| completed_lessons.include?(lesson.id) }
  end
end

まとめ

all? メソッドは、Ruby on Rails で配列内の要素が条件を満たすかどうかを一度に判定するのに便利なメソッドです。 ぜひ使ってみてください。

参考文献