2つの基本的なオプションがあります。1つ目は、三項演算子を使用し、文字列が空の場合にデフォルト値を指定することです。基本的なテンプレートは次のとおりです。
(params[:amount].empty?) ? <EMPTY EXPRESSION> : <NOT EMPTY EXPRESSION>
たとえば、が空のnil
ときに戻るには、次のようにします。params[:amount]
weight = Weight.create(
:amount => (params[:amount].empty?) ? nil : params[:amount].to_f,
:user_id => current_user.id,
:created_at => Time.now
)
2つ目は、Rubyの論理演算子を使用することです。基本的なテンプレートは次のとおりです。
params[:amount].empty? && <EMPTY EXPRESSION> || <NOT EMPTY EXPRESSION>
たとえば、params[:amount]
が空のときに例外を発生させるには、次のようにします。
weight = Weight.create(
:amount => params[:amount].empty? && \
(raise ArgumentError.new('Bad :amount')) || params[:amount].to_f
:user_id => current_user.id,
:created_at => Time.now
)
どちらの方法でもnil
、例外を返すか発生させることができます。選択は主に文体です。