2012-01-09 4 views
0

Я работаю с жемчужиной UUIDTools в Rails 3 и сталкиваюсь с некоторыми проблемами. Это, кажется, работает нормально на практике: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 

Где моя справ? Кажется, что нет какого-либо шаблона для того, какой идентификатор назначен, я запустил это несколько раз и увидел, что он идет от нуля до тысячи.

Вот моя миграция:

Моя модель:

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, я получаю то же поведение, что и в спецификациях, - отрубы отложены.

+0

Хм, посмотрев на это, я обнаружил, что сами базы данных были разными. Я уронил таблицы и перепробовал миграцию, и все кажется прекрасным. Может быть, я оставил тестовую базу данных в странном состоянии, модифицируя мои миграции локально. – lobati

+0

И еще странность. Некоторая комбинация миграции и создания баз данных, похоже, оставляет schema.rb в противоречивом состоянии. Я попытался удалить все таблицы, удалить schema.rb и начать с нуля, но я все еще не могу вернуться к работе. – lobati

+0

Хорошо, это похоже на ошибку в рельсах. Раньше я использовал Rails 3.1.1 и играя вокруг меня обновил до Rails 3.1.3. Вот когда все закончилось в моем комментарии выше. Когда я вернусь к 3.1.1, это не сработает. – lobati

ответ

0

Хорошо, ответ состоял в том, чтобы перейти на Rails 3.1.3 из 3.1.1.

Смежные вопросы