ruby-on-rails - 如果字符串为空则返回一些默认值

标签 ruby-on-rails ruby

我经常需要检查某些值是否为空,然后像这样写“没有数据”:

@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/

相关文章:

ruby-on-rails - Rails-将哈希添加到redirect_to

ruby-on-rails - 启动 Rails 脚手架时出现 OSX Ruby 错误 : Could not load OpenSSL

Ruby 模块 - 包含 do end block

ruby - 使用 Ruby 发送自定义 HTTP header

ruby-on-rails - Ruby 线程池——我做错了什么?

ruby - 使用 EventMachine 的 SOAP 调用

ruby-on-rails - Heroku 上的 Ruby on Rails 4,带反斜杠转义的环境变量

ruby-on-rails - Rails 范围 : Find records using class method rather than db column

ruby-on-rails - spring rspec连接不上数据库

ruby-on-rails - 有时禁用 CSRF 保护是合理的吗?