uuidtools, rspec и Rails 3 - PullRequest
       6

uuidtools, rspec и Rails 3

0 голосов
/ 09 января 2012

Я работаю с гемом UUIDTools в 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

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

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

class CreateItems < ActiveRecord::Migration
  def change
    create_table :items, :id => false do |t|
      t.string :uuid, :null => false, :primary => true

      t.timestamps
    end

    add_index :items, :uuid, :unique => true
  end
end

Моя модель:

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

1 Ответ

0 голосов
/ 14 января 2012

Хорошо, ответ был на обновление до Rails 3.1.3 с 3.1.1.

...