我经常需要检查某些值是否为空,然后像这样写“没有数据”:
@user.address.blank? ? "We don't know user's address" : @user.address
当我们有大约 20-30 个字段需要以这种方式处理时,它就变得丑陋了。
我所做的是使用 或
方法扩展 String 类
class String
def or(what)
self.strip.blank? ? what : self
end
end
@user.address.or("We don't know user's address")
现在看起来好多了。但它仍然是原始和粗糙的
如何更好地解决我的问题。也许扩展 ActiveSupport 类
或使用辅助方法或混合或其他任何东西会更好。什么 ruby 理念、您的经验和最佳实践可以告诉我。
最佳答案
ActiveSupport 添加了一个 presence
如果 present?
(blank?
相反),则返回其接收器的所有对象的方法,否则为 nil
。
例子:
host = config[:host].presence || 'localhost'
关于ruby-on-rails - 如果字符串为空则返回一些默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4817266/