object.presence的重点是什么?
在Rails文档中,为object.presence
方法提供的示例是:
region = params[:state].presence || params[:country].presence || 'US'
但这不等于:
region = params[:state] || params[:country] || 'US'
使用presence
什么意义?
这就是重点:
''.presence # => nil
所以如果params[:state] == ''
:
region = params[:state].presence || 'US' # => 'US' region = params[:state] || 'US' # => ''
更重要的是,它在每个响应empty?
对象上以类似的方式工作(即,如果对象为’空’,则返回nil
) empty?
方法,例如:
[].presence # => nil
这是文档,供参考:
http://api.rubyonrails.org/classes/Object.html#method-i-presence
我只是以一种有用的方式使用它,我发现它很整洁。 我的变量是一个字符串,如果它是我想要的空字符串,否则我希望它转换为整数。
x.presence.try(&:to_i) "".presence.try(&:to_i) # => nil "22".presence.try(&:to_i) # => 22
如果要在对象不存在时返回nil
则presence
非常有用;如果对象存在,则返回对象本身。 换句话说,您需要一个如下所示的代码:
object.present? object : nil
您可以直接调用object.presence
而不是上面的行,该方法将为您完成工作。