初めまして、ずっきーです。

今回ですけども(ヒカル風)

タイトルにもあるように、MySQLのコマンドをよく忘れて問い合わせが来たりするのでよく使うコマンドだけピックアップしました。

それでは、早速行きます。

Scope(スコープ)とは

Active Recordの機能の一部です。
詳しくは、
https://railsguides.jp/

Scopeにすると何がいいの?

  • コントローラーに書いてあったコードがすっきりする
  • 複数のクエリを一つにまとめれる

失敗例

ユーザー情報を取得したいからscopeを使って省略しようとした人いませんか?

scope :user_info, -> (email, password) { find_by(email: email, password: password) }

こういう書き方人いませんか?
ぱっと見るだけでは、間違っているようには、見えませんよね自分もそうだと思いました

SQLにするとこんな感じです。

select *from users where email='hoge@gmail.com' and password='xxxx'

実行してみてわかったんです。

ユーザー情報が間違っていた場合
全件のデータが取得されるような処理になります。

見る限りは、nil が返却されそうですがそうでなく
配列で返却されるようです。

Model.user_info( email, password ).empty?

と書かなければなりません
ややこしいですね
皆さんもfind_byを使うときは、気をつけてください

記事を読んでくださってありがとうございます。
どんどん失敗例を上げていきたいと思ってます。
自分の励みになると思うので、いいねをよろしくお願いします。