2012-01-09 1 views
0

레일즈 3의 UUIDTools 보석과 함께 작업 중이며 몇 가지 문제가 있습니다. 표시uuidtools, rspec, Rails 3

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 어디는 다른 이야기를 내 사양에

> 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" 

그러나 다음을 : 실제로 잘 작동하는 것 같다? 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에 일부 디버거 논리를 퍼팅 나는 뭐하는거야 것을 발견했습니다 어떤 시점에서 uuid에 to_i이 있습니다. 어떤 제안?

업데이트 이것은 Rails 테스트 환경의 버그 인 것 같습니다. 내가 RAILS_ENV=test rails console을 실행할 때 스펙에서와 동일한 동작을합니다. - guids가 잘립니다.

+0

흠, 좀 더 살펴보면 데이터베이스 자체가 다른 것을 발견했습니다. 나는 테이블을 떨어 뜨리고 마이그레이션을 다시 시도하고 모든 것이 잘된 것처럼 보입니다. 내 마이그레이션을 로컬로 수정하는 이상한 상태로 테스트 데이터베이스를 남겨 둘 수 있습니다. – lobati

+0

그리고 더 이상한. 데이터베이스를 마이그레이션하고 생성하는 일부 조합은 schema.rb를 일관성없는 상태로 유지하는 것처럼 보입니다. 나는 모든 테이블을 삭제하고 schema.rb를 제거하고 처음부터 시작하려고 시도했지만 여전히 작업으로 되돌릴 수는 없습니다. – lobati

+0

좋아, 글쎄, 레일에 버그가있는 것 같아. 나는 Rails 3.1.1을 사용하기 시작했고 Rails 3.1.3으로 업그레이드하기 전에 사용하고있었습니다. 그게 내 위의 발언에서 일을 끝낼 때입니다. 3.1.1로 되돌아 가면 작동하지 않습니다. – lobati

답변

0

좋아요, 대답은 3.1.1에서 Rails 3.1.3으로 업그레이드하는 것이 었습니다.