rubyでreturn user if user && user ってなに

今日実装してたら下記のようなコードに出会った

  def user
    user = User.find_by_email(email)
    return user if user && user.authenticate(password)

    errors.add :user_authentication, 'invalid credentials'
    nil
  end

わからなかったので調べてわかった

def user_auth
  return "これが帰ってくる" if "ここがどっちもtrueだったら" && "ここがどっちもtrueだったら"

  'もし && でどちらか一方でもfalseだったら、下記の表示により、nilが返ってくる'
  nil
end

ちなみに、文字列は必然的にtrueなので、上記のコードを実行した場合、「これが帰ってくる」が返ってくる

irb(main):132:0> def user_auth
irb(main):133:1>   return "これが帰ってくる" if "ここがどっちもtrueだったら" && "ここがどっちもtrueだったら"
irb(main):134:1> 
irb(main):135:1>   'もし && でどちらか一方でもfalseだったら、下記の表示により、nilが返ってくる'
irb(main):136:1>   nil
irb(main):137:1> end
(irb):133: warning: string literal in condition
(irb):133: warning: string literal in condition
=> :user_auth
irb(main):138:0> user_auth
=> "これが帰ってくる"
irb(main):139:0>

理解した。

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です