rails创建方法创建“未保存的”nil记录

时间:2013-11-30 02:58:18

标签: ruby-on-rails ruby ruby-on-rails-3

我正在为我的模型使用Rails 3.2和enumerize gem(https://github.com/brainspec/enumerize

我有一个与项目模型关联的模型用户定义为:

class User < ActiveRecord::Base
    has_many :items, dependent: :destroy
end

class Item < ActiveRecord::Base
    belongs_to :user
    enumerize :type, :in => %w(toys clothing electronics)
end

项目模型后来升级为另外一种类型

class Item < ActiveRecord::Base
    belongs_to :user
    enumerize :type, :in => %w(toys clothing electronics food)
end

我启动控制台但是当我尝试这样做时:

u = User.first
u.items.create(type:'food')

我收到此查询:

    SELECT 1 AS one FROM "items" WHERE ("items"."type" = 'food' AND "items"."user_id" = 1) LIMIT 1
ROLLBACK

当我尝试user.items

我看到一条记录包含所有内容(id,item.type),但是当我退出控制台时,nil记录消失了。

但是,如果我使用先前定义的数组中的类型创建记录,则记录保存得很好。我有什么简单的遗失吗?

1 个答案:

答案 0 :(得分:1)

尝试

u.items.create!(type:'food')

如果您的项目未创建,爆炸将引发异常。这应该揭示你的问题。最有可能是验证。