Har*_*tty 13 ruby ruby-on-rails
我经常编写代码以在遇到nil/empty值时提供默认值.
例如:
category = order.category || "Any"
# OR
category = order.category.empty? ? "Any" : order.category
Run Code Online (Sandbox Code Playgroud)
我即将扩展该try方法来处理这个习语.
category = order.try(:category, :on_nill => "Any")
# OR
category = order.try(:category, :on_empty=> "Any")
Run Code Online (Sandbox Code Playgroud)
我想知道Rails/Ruby是否有一些方法来处理这个习惯用法?
注意:
我试图消除重复的 || / or / ?基于操作员的习语.
基本上我正在寻找try处理默认替换方案的等效方法.
没有try方法:
product_id = user.orders.first.product_id unless user.orders.first.nil?
Run Code Online (Sandbox Code Playgroud)
随着try方法:
product_id = user.orders.first.try(:product_id)
Run Code Online (Sandbox Code Playgroud)
很容易实现处理这个习惯用法的通用方法,但我想确保不重新发明轮子.
Dav*_*ips 16
看到这个问题.ActiveSupport presence为所有返回其接收者的对象添加一个方法present?(如果(相反blank?)),nil否则.
例:
host = config[:host].presence || 'localhost'
Run Code Online (Sandbox Code Playgroud)