2015-12-21 2 views
0

Я, вероятно, занимаюсь чем-то очень глупым, но я не могу пройти тест, потому что FactoryGirl.attributes_for не выводит реляционное поле.FactoryGirl не выводит ассоциации с build_attributes

Вот мой project завод:

FactoryGirl.define do 
    factory :project do 
    status 'active' 
    loan_amount 5000 
    start_date Time.now 
    end_date Time.now + 2.week.to_i 
    description "Sample Project" 
    user 
    end 
end 

Вот тест, который я пытаюсь получить этот тест пройти:

let(:user) { FactoryGirl.create(:user) } 
let(:project_attributes) { FactoryGirl.attributes_for(:project, user: user) } 

it 'assigns a newly created project as @project' do 
    post :create, { project: project_attributes } 
    expect(assigns(:project)).to be_a(Project) 
    expect(assigns(:project)).to be_persisted 
end 

Это выход project_attributes:

{:status=>"active", :loan_amount=>5000, :start_date=>2015-12-21 12:07:32 -0800, :end_date=>2016-01-04 12:07:32 -0800, :description=>"Sample Project"} 

Это дает мне ошибку:

@messages={:user=>["can't be blank"]}> 

Любые идеи? Почему FactoryGirl не выводит пользователя при использовании attributes_for?

+0

Может быть, что 'attributes_for' не признает ассоциацию. Что происходит, когда вы делаете 'user_id: user.id' вместо этого? – steel

ответ

0

Похоже, что ваше определение фабрики :project немного не работает. Если проект belongs_to пользователь, завод должен сказать association :user, как в

factory :project do 
    status 'active' 
    loan_amount 5000 
    start_date Time.now 
    end_date Time.now + 2.week.to_i 
    description "Sample Project" 
    association :user 
end 
+0

Это не выводит пользователя как часть 'FactoryGirl.attributes_for (: project, user: user)' 'user' является допустимым сокращением для' association: user, factory: user' – doremi

+0

Попробуйте 'FactoryGirl.build (: project, user : user) .attributes' – eugen

+0

Проблема с этим является 'status' - это перечисление, и теперь' .attributes' устанавливает статус '1', вызывая ошибку:' '1 'недействительный статус' – doremi

Смежные вопросы