magazine off

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

投稿日 : 2019年3月24日(日曜日)

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

  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>

理解した。

Categories

Recent Posts

How to make Systemd a daemon application

  What I wanted to do I was deploy…

投稿日 : 2019年10月14日(月曜日)

rspecでテストしようとしたらActiveRecord::StatementInvalid: Could not find table

 rspecでテストしようとしたらActiveRecord::StatementI…

投稿日 : 2018年12月27日(木曜日)

初心者のためのHTTPステータスコードの解説

  HTTPステータスコードとは? 厳密に言うと、HTTPレスポンスのステー…

投稿日 : 2021年6月26日(土曜日)

:not( )に関して – jquery

    環境 :not( ) js Jav…

投稿日 : 2017年9月7日(木曜日)