Cucumber重复类问题:AssociationTypeMismatch
当模型回调方法中引用 self 时,我遇到了 Cucumber 问题。
下面的代码示例。 错误是这样的: 预计 Person(#26738680),得到 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
失败的场景如下:
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
谢谢 亚当
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这并不能直接回答你的问题,但我建议 after_create 回调是不必要的。您已经在
Person
模型中定义了accepts_nested_attributes_for
- 如果目标是创建一个Person
和关联的PersonProfile一步,你应该能够做到(例如):
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.):