技術ネタ

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>

理解した。

Pocket
LinkedIn にシェア



新規webサービスの開発の依頼ならoffテク⭐️

低コストで、Reactなどモダン言語での新規webサービス開発を承ります

-技術ネタ

Copyright© off , 2020 All Rights Reserved Powered by AFFINGER5.