为什么.each只能通过第一个元素?

时间:2013-02-17 00:18:18

标签: ruby-on-rails ruby

我写了这个方法:

def create_demo_organizations

  sample_organizations = [ '37 Signals', 'Fog Creek']

  sample_organizations.each { |item|
    Organization.first_or_create(
        name: item,
        time_zone: 'Central'
    )
  }

end

我希望它会为我创建两个组件中包含名称的组织,但是当我在UI管理工具中打开它时,我只能看到第一行是'37信号'而不是第二行。我写错了吗?

我的目标是遍历该数组的成员并将它们插入数据库中。

1 个答案:

答案 0 :(得分:4)

首先尝试将活动记录代码与循环代码隔离开来。所以从:

开始
sample_organizations.each do |item|
  puts item
end

如果您打印两个项目,请添加更简单的AR呼叫:

sample_organizations.each do |item|
  Organization.create(name: item)
end

最后:

sample_organizations.each do |item|
  Organization.find_or_create(name: item)
end

编辑:

我认为您没有正确地呼叫first_or_create。你可能想要这样的东西:

Organization.where(name: item).where(time_zone: 'Central').first_or_create