在Ruby中,我有一个具有数组的对象.我希望迭代数组中的值,但数组中至少需要有一项.我知道我可以做这样的事情:

if object.initial_array.empty?
  object.initial_array << "foo"
end
object.initial_array.each do ...

但我希望能够在一条线上做到这一点.枚举数组并在为空时指定默认值的最简洁方法是什么?

推荐答案

只需使您的initial_array方法具有默认设置,如下所示:

  attr_accessor :initial_array

  def initial_array
    @initial_array.presence || @initial_array = %w[foo]
  end

Ruby-on-rails相关问答推荐

错误正在被ViewComponent、Ruby on Rails中吞噬

DELETE_IF和REJECT的意外行为!方法

Rails文档的悲观锁定示例中的争用条件

验证以确保唯一性但忽略空值?

有没有办法在 Rails 3.1 中检测用户代理

Rails - 从日期和时间戳获取日期

在 ruby​​ on rails 上构建方法

警告:引用了顶级常量

登录delay_job?

默认呈现 JSON 而不是 HTML?

Rails Devise:设置密码重置令牌并重定向用户

:javascript haml 标签中的内联Ruby ?

Test::Unit Rails - 如何断言一个数字大于另一个?

Mongoid OR 查询语法

长期运行项目中的 Rebase Rails 迁移

如何翻译 ActiveRecord 模型类名称?

向 Rails 模型添加外键

用于在多行上链接调用的 Ruby 约定

如何在 Rails 迁移中判断数据库类型?

为什么不对 Rspec + Selenium 使用共享的 ActiveRecord 连接?