はじめに
本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。
今回の疑問点
今回の疑問点は、
データベースから特定のカラムを取得して、all?メソッドで判定する方法
です。
疑問点についての解説
###結論
pluckメソッドを使用して配列でデータを取得し、all?メソッドで判定する。
###具体例
@Taro = User.where(name: "太郎").pluck('age')
@Taro.all?{ |w| w == '20' }
上記のように記載することで、
where
でnameカラムが太郎であるレコードを全て取得し、pluck
でさらにageカラムのみに絞り、配列で取得します。
そして、@Taro.all?{ |w| w == '20' }
で取得した配列の要素一つ一つに対して20
であるか否か判定され、全てが20
であれば、trueが返されます。
where
で取得した太郎さんが全員20歳であればtrue
になります。
selectメソッドを使うとActiveRecord::Relationオブジェクトを返すので、all?メソッドが使用できないため、配列で取得するためにpluckメソッドを使用しています。
ActiveRecord::Relationオブジェクトをeachとifを使って判定しても同じような処理を実現することはできますが、記述が長くなってしまいます。
まだ、学習を始めて2ヶ月弱のため、もっと良い書き方があれば、ご教示いただけますと幸いです。
まとめ
時間がある時にもう少し丁寧に書き直そうと思います。