Проблема класса дубликата огурца: AssociationTypeMismatch - PullRequest
1 голос
/ 22 февраля 2011

У меня проблема с огурцом, когда в методе обратного вызова модели есть ссылка на себя.

Пример кода ниже.Ошибка выглядит так: Ожидается лицо (# 26738680), получено лицо (# 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

Сценарий сбоя выглядит так:

  Scenario: Student logs in for the first time
    Given I am a valid Student

Инеудачные шаги:

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

Спасибо, Адам

1 Ответ

0 голосов
/ 01 марта 2011

Это не дает прямого ответа на ваш вопрос, но я собираюсь предположить, что обратный вызов after_create не нужен. Вы уже определили accepts_nested_attributes_for в модели Person - если целью является создание Person и связанного PersonProfile за один шаг, вы сможете выполнить (например,):

params = { :person => { :name => "John Smith",  
 :person_profile_attributes => { :some_profile_attribute => "some_value" }}}
@person = Person.create!(params[:person])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...