Factory Girl устанавливает неверное значение для идентификатора автоинкремента в ассоциации - PullRequest
2 голосов
/ 15 ноября 2011

У меня есть две зависимые модели с ассоциацией один ко многим

class Post < ActiveRecord::Base
  has_many :users
end

class User < ActiveRecord::Base
  belongs_to :post
end

в моей СУБД post_id в users таблица определяется как внешний ключ

Я написал два сценария огурца - во-первых, я (с помощью factory_girl) создаю двух пользователей, а во-вторых, я также хочу создать двух пользователей, но создание не удается, потому что factory_girl создает зависимые post записи с id, установленным в один однако в предыдущем сценарии две записи в таблице posts были созданы и удалены, поэтому значение id должно начинаться с 3, а не с 1. Я использовал pry для отладки этого процесса и заметил, что, если я использую FactoryGirl.build( :post ), он правильно устанавливает значение, но если я использую FactoryGirl.build( :user ), то значение post.id всегда равно 1. Как я могу сделать это buld записи с правильными id?

EDIT

FactoryGirl.define do 

  sequence :composite_id do |n| 
    "F98F3806-#{sprintf("%04X", n)}-4C96-879C-2C6F38213D8E"
  end

  # Post 
  factory :post do
    sequence( :post_id ) { |n| "#{n}" }
    some_field "Lorem Ipsum is simply dummy text of the printing a"
    ...
  end

  # User
  factory :user do
    user_id { FactoryGirl.generate( :composite_id )}
    association :post_id, :factory => :post
    ...
  end

end

1 Ответ

2 голосов
/ 16 ноября 2011

Это должно быть association :post.FactoryGirl определит поле идентификатора.

...