我很难理解为什么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
我在这里错过了什么吗?
由于