地方でリモートワーク in Iwate

東京の受託開発会社でリモートワークしてます。

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版