0

私はこのメソッドを書きました:

def create_demo_organizations

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

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

end

配列に名前が含まれる2つの組織が作成されることを期待していましたが、UI管理ツールで開くと、「37シグナル」の最初の行のみが表示され、2番目の行は表示されません。私はそれを間違って書きましたか?

私の目標は、その配列のメンバーを反復処理してデータベースに挿入することでした。

4

1 に答える 1

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
于 2013-02-17T01:03:52.083 に答える