Проблема при инициализации фабричного объекта - PullRequest
0 голосов
/ 01 октября 2011

Я использую гемы Ruby on Rails 3.1.0, rspec-rails 2 и Factory.У меня есть некоторые проблемы, связанные с процессом проверки, когда я указываю объект Factory для класса Account.

В файле модели у меня есть:

class Account < ActiveRecord::Base
  belongs_to :user

  attr_accessible :name, ..., :password

  validates :name,
    :presence => true

  ...

  validates :password,
    :presence => true
end

В файле фабрики, который у меня есть:

FactoryGirl.define do
  factory :account, do
    sequence(:name)  { |n| "Foo #{n}"}
    ...
    password 'psw_secret'
    association :user
  end

  factory :user do
    auth 'registered'
  end
end

Когда в файле спецификации я указываю let!(:account) { Factory(:account) }, он работает как положено, но при использовании следующего:

let!(:user) { Factory(:user, :account => Factory(:account)) }

Я получаю эту ошибку:

Failure/Error: let!(:user) { Factory(:user, :account => Factory(:account)) }
ActiveRecord::RecordInvalid:
   Validation failed: Account password can not be blank, Account is invalid

Почему Я получаю эту ошибку?Как я могу решить проблему?

1 Ответ

1 голос
/ 02 октября 2011

Я думаю, вы должны сделать это наоборот:

@user = Factory(:user)
@account = Factory(:account, :user => @user)

Отношение определено для account, а не для user. Надеюсь, это поможет.

...