I am having a problem with Cucumber when there is a reference to self in a model callback method.
Code example below. The error is like: Person(#26738680) expected, got Person(#29003170) (ActiveRecord::AssociationTypeMismatch)
class Person < ActiveRecord::Base
has_one :person_profile
accepts_nested_attributes_for : person_profile
after_create :new_person_profile
private
def new_person_profile
person_profile = PersonProfile.new(
...,
:person => self # <--- this causes the error in cucumber
)
self.person_profile.save
end
The failing scenario is like:
Scenario: Student logs in for the first time
Given I am a valid Student
And the failing steps:
Before do
include Authlogic::TestCase
activate_authlogic
end
def valid_person
@current_person = Factory.create(:valid_person, :person_profile => new_person_profile('Kelly','Hope'))
end
Given /^I am a valid Student$/ do
valid_student
end
Thank you Adam
This doesn't directly answer your question, but I'm going to suggest that the after_create callback is unnecessary. You've already defined
accepts_nested_attributes_for
in thePerson
model -- if the objective is to create aPerson
and an associatedPersonProfile
in one step, you should be able to do (eg.):