2012-01-09 6 views
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にいくつかのデバッガロジックを置く私はそれをやっていることを発見しましたある時点でuuidにto_iがあります。助言がありますか?

更新これは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

申し訳ありませんが、答えは、3.1.1からRails 3.1.3にアップグレードすることでした。