Rubyの代入演算子はRailsでも頻出なので暗記したほうがいい!

f:id:ihatov08:20160720220505j:plain

Rubyの代入演算子についてです!


Rubyの代入演算子とは?

Rubyの代入演算子とは

hoge ||= 1

などのことです。
これは

hoge = hoge || 1

と同じ意味になります。
hogeがnilかfalseの場合に限り1を代入するという意味になります。
これは変数にデフォルトの値を与えるruby定番の文法です。

Railsでも頻出!

Railsでもログインしているユーザーか判定するcurrent_userメソッドなどを定義する時にRubyの自己代入を使います。

def current_user
@current_user ||= User.find_by(id: session[:user_id])
end

以下のようにfindを使って定義することもできます。

def current_user
@current_user ||= User.find(session[:user_id])
end

findはIDを元に検索をすることと、見つからなかった場合にActiveRecord:NotFoundが投げられます。
find_byは検索条件に基づいて最初の1件をとってきます。
見つからなかった場合はnilを返します。
見つからないことを前提にする場合はfind_byを使ったほうがいいようなので、current_userを定義するならfind_byを使ったほうがよさそうですね。

Rubyの文法を覚えるなら

たのしいRuby 第5版

たのしいRuby 第5版

コメントを残す

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