你有两个基本的选择。第一种是使用三元运算符,当字符串为空时给出一个默认值。基本模板是:
(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
)
二是使用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
或引发异常。选择主要是风格。