ぼっち演算子とは?
⇨レシーバーがnilだった場合でもメソッドをエラーにさせない仕組み
例
class User def name puts "まさです" end end user = User.new user.name object = nil object.name 出力結果 a.rb:15:in `<main>': undefined method `name' for nil:NilClass (NoMethodError) object&.name 上記の出力結果エラーにならずnilを戻り値として返す。
どういう用途で使う?
⇨ログインしているユーザーとログインしていないユーザーでページを出し分ける際
@nickname = current_user.nickname
このような時です。このcurrent_userはログインしていない時はnilになってしまうのでログインしていないときにこのメソッドが実行されてしまうとエラーになってしまうのですがここでボッチ演算子を使うことでこのnilのcurrent_userをnilという表記で出力することができます。nilで返すことでエラーが消え、current_userに何も入っていない時でもページを表示することができます。
@nickname = current_user&.nickname
書き方はこの通りです。メソッドの前に&をつけるだけです。こうすることでcurrent_userはnilを返すことができるようになります。
少しわかりづらいかもしれないですが、オブジェクトがnilだった場合にnilに対応していないメソッド(NilClassに定義されていないメソッド)を呼び出すので、エラーが出る状況だったのを、オブジェクトがnilだった場合に戻り値にnilを返すメソッドに一時的に変えてしまうことでエラーを回避するという感じですかね。(実際の仕組みは分からない)