最初の答えは間違っています。コードは大まかに次のように変換できます。
if params[:auth_token].blank?
params[:auth_token] = request.headers["auth_token"]
end
つまり、params の「auth_token」が空白の場合、ヘッダーから「auth_token」に設定されます。true
ブール演算子が Ruby で単一のブール値を返さないためだけに設定されているわけではありません。
true && "abcde" #=> "abcde"
nil || 42 #=> 42
nil && nil #=> nil
コードから条件を1つだけ省略しました。完全な翻訳は次のとおりです。
if params[:auth_token].blank? and request.headers["auth_token"]
params[:auth_token] = request.headers["auth_token"]
end
唯一の違いはparams[:auth_token] = ""
、request.headers["auth_token"] = nil
パラメーターが nil に変更されない場合です。これは非常に些細なことですが、あなたがこれを気にするかどうかはわかりません。
空白文字列が含まれていない場合は、Ruby の "or equal" 演算子を使用してより明確に表現できます。
params[:auth_token] ||= request.headers["auth_token"]