first_or_create生成SystemStackError:堆栈级别太深的错误

时间:2015-01-24 03:32:28

标签: ruby-on-rails-4

我很难理解为什么first_or_create会给我以下错误。

在我的Rails 4.2.0应用程序中,我有一个名为Activity的模型

class CreateActivities < ActiveRecord::Migration
  def change
    create_table :activities do |t|
      t.string :name, :null => false

      t.timestamps
    end

    add_index :activities, :name, :unique => true
  end
end

当我查找姓名等于 all 的第一条记录时,从IRB我正确得到nil(表格为空)

irb(main):004:0> Activity.where(name: 'all').first
  Activity Load (0.2ms)  SELECT  `activities`.* FROM `activities` WHERE `activities`.`name` = 'all'  ORDER BY `activities`.`id` ASC LIMIT 1
=> nil

然而,当我尝试创建记录时如果不存在,我得到 SystemStackError:堆栈级别太深

irb(main):005:0> Activity.where(name: 'all').first_or_create
  Activity Load (0.3ms)  SELECT  `activities`.* FROM `activities` WHERE `activities`.`name` = 'all'  ORDER BY `activities`.`id` ASC LIMIT 1
SystemStackError: stack level too deep
    from /Users/pippo/.rbenv/versions/1.9.3-p327/lib/ruby/1.9.1/irb/workspace.rb:80

我在这里错过了什么吗?

由于

0 个答案:

没有答案