Ruby on rails Ruby/Rails中条件变量操作的快捷方式
我的API控制器接收的一个参数有一个大的键名,我需要将它从字符串转换为整数(如果有),然后再将其发送到要持久化的模型。通常,我会执行以下操作之一:Ruby on rails Ruby/Rails中条件变量操作的快捷方式,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的API控制器接收的一个参数有一个大的键名,我需要将它从字符串转换为整数(如果有),然后再将其发送到要持久化的模型。通常,我会执行以下操作之一: params[:really_big_key_name] = params[:really_big_key_name].to_i unless params[:really_big_key_name].blank? 或 正如您所看到的,代码行变大了,超过80个字符,我希望坚持使用Ruby最佳实践。有没有一种更短、更具Ruby风格的方法可以做到这一点
params[:really_big_key_name] = params[:really_big_key_name].to_i unless params[:really_big_key_name].blank?
或
正如您所看到的,代码行变大了,超过80个字符,我希望坚持使用Ruby最佳实践。有没有一种更短、更具Ruby风格的方法可以做到这一点?也许是“就地”方法。类似于数组的东西与bang方法有关。不幸的是,给我代码>对于字符串不存在,这正是我所需要的。您可以这样做:
params[:really_big_key_name] = params[:really_big_key_name].try(:to_i)
您可以这样做:
params[:really_big_key_name] = params[:really_big_key_name].try(:to_i)
我想说一个就地方法不可能存在,因为这会将类型从string
更改为number
。您可以始终使用我认为不存在的就地方法,因为这样会将类型从string
更改为number
。您可以始终对nil:NilClass使用NoMethodError:undefined方法“try”
@BradWerth您使用的是Rails还是纯Ruby<代码>尝试
是Rails自2.3.2以来的一部分。你说得对-我没有使用Rails。FWIW,这个答案的纯ruby版本是params[:really_big_key_name]=params[:really_big_key_name]&。to_i
@BradWerth啊,好主意。显然,在本例中,OP使用的是Rails,但仍然非常了解:拇指支持:我会坚持使用试试@BradWerth建议使用params[:really_big_key_name]&.to_i
非常好,但它需要Ruby 2.3,目前我正在使用Ruby 2.1。谢谢你们的回答,伙计们NoMethodError:nil:NilClass的未定义方法“try”
@BradWerth您使用的是Rails还是纯Ruby<代码>尝试
是Rails自2.3.2以来的一部分。你说得对-我没有使用Rails。FWIW,这个答案的纯ruby版本是params[:really_big_key_name]=params[:really_big_key_name]&。to_i
@BradWerth啊,好主意。显然,在本例中,OP使用的是Rails,但仍然非常了解:拇指支持:我会坚持使用试试@BradWerth建议使用params[:really_big_key_name]&.to_i
非常好,但它需要Ruby 2.3,目前我正在使用Ruby 2.1。谢谢你们的回答,伙计们!