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
を実行すると、仕様と同じ動作が得られます。ガイドは切り捨てられます。
ええと、これをもう少し見ると、データベースそのものが違っていることがわかりました。私はテーブルを落として移行を再開し、すべてがうまくいくようだ。テストデータベースを奇妙な状態にして、マイグレーションをローカルに変更することができましたか? – lobati
そしてもっと奇妙です。データベースの移行と作成の組み合わせによっては、schema.rbが矛盾した状態になっているようです。私はすべてのテーブルを削除しようとしましたが、schema.rbを削除して最初からやっていますが、まだそれを元に戻すことはできません。 – lobati
さて、レールにバグがあったようです。以前はRails 3.1.1を使っていましたが、Rails 3.1.3にアップグレードして遊んでいました。それは私の上記のコメントで事がうまくいったときです。私が3.1.1に戻ったとき、それはうまくいきませんでした。 – lobati