0
我正在使用Rails 3中的UUIDTools gem并遇到一些问题。这似乎在实践中很好地工作:uuidtools,rspec和Rails 3
> item = Item.create
=> #<Item uuid: "e9d00043-9200-4497-a55c-509c5de3dd88", created_at: "2012-01-09 01:56:49", updated_at: "2012-01-09 01:56:49">
> item.id
=> "e9d00043-9200-4497-a55c-509c5de3dd88"
但后来在我的规格它讲述了一个不同的故事:
require 'spec_helper'
describe Item do
it 'should assign an id' do
item = Item.create
puts "item id: #{item.id}"
end
end
运行此规格显示:
item id: 5
.
Finished in 2.21 seconds
1 example, 0 failures
哪里是我的GUID?似乎没有任何模式分配的ID,我已经运行了很多次,并且看到它从0到上千以内的任何地方。
这里是我的移民:
我的模型:
require 'uuid_helper'
class Item < ActiveRecord::Base
include UUIDHelper
end
而且我uuid_helper:
module UUIDHelper
def self.included(base)
base.class_eval do
set_primary_key :uuid
attr_readonly :uuid
before_create :set_uuid
private
def set_uuid
self.uuid = UUIDTools::UUID.random_create.to_s
end
end
end
end
把一些调试逻辑为set_uuid
我发现它在做什么to_i
在uuid在某个时刻。有什么建议么?
更新这似乎是Rails测试环境中的一个错误。当我运行RAILS_ENV=test rails console
时,我得到了与规格中相同的行为 - 指令被切断。
嗯,看着这一些,我发现数据库本身是不同的。我放弃了桌子,重新进行了迁移,一切似乎都很顺利。可能是我离开我的测试数据库在奇怪的状态修改我的本地迁移。 – lobati 2012-01-09 03:41:31
更怪异。迁移和创建数据库的某些组合似乎会使schema.rb处于不一致的状态。我试过删除所有的表,删除schema.rb并从头开始,但我仍然无法恢复工作。 – lobati 2012-01-09 04:16:45
好吧,它好像是一个轨道中的错误。我在使用Rails 3.1.1之前和在玩游戏时升级到了Rails 3.1.3。那是在我上面的评论中解决问题的时候。当我恢复到3.1.1时,它不起作用。 – lobati 2012-01-09 04:49:54