ste*_*tef 0 ruby ruby-on-rails
在Ruby中,通常使用双管道运算符来测试变量是否为假,并在未定义变量时应用某种默认设置.这是我在代码库中遇到的一行配置我正在做一些工作:
config.uh_product_name = ENV['UH_PRODUCT_NAME'] || 'Unicorn Hunt'
Run Code Online (Sandbox Code Playgroud)
这一切都很好,如果ENV["UH_PRODUCT_NAME"]是的话nil.但在这种情况下,由于.env文件默认设置的方式,ENV["UH_PRODUCT_NAME"]是一个空字符串"",这是真的.因此默认情况下不会应用.
我可以这样做来处理这种情况:
config.uh_product_name = ENV['UH_PRODUCT_NAME'].present? ? 'Unicorn Hunt' : ENV['UH_PRODUCT_NAME']
Run Code Online (Sandbox Code Playgroud)
但这样的可读性要低得多,最终会出现一系列可能会延伸到屏幕外的代码.
那么,有没有人知道一个速记算子沿着||应用Rails's .blank?或将空字符串视为falsy?也许这样的东西:
config.uh_product_name = ENV['UH_PRODUCT_NAME'] ?|| 'Unicorn Hunt'
Run Code Online (Sandbox Code Playgroud)
config.uh_product_name = ENV['UH_PRODUCT_NAME'].presence || 'Unicorn Hunt'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |