我有两个相关模型 - Customer
,其中有一个Address
。这些是我的工厂:
FactoryGirl.define do
factory :customer do
address
end
end
FactoryGirl.define do
factory :address do
company_name "MyString"
…
end
end
在我的控制器规范中,我尝试为客户获取包含地址属性的哈希值...这对我来说无效。
第一次尝试是使用attributes_for(:customer)
,但忽略了任何关联(如文档中所述)。谷歌搜索后我找到了使用FactoryGirl.build(:customer).attributes.symbolize_keys
的建议,其中应包括关联参数。但不适合我,我只是{"id"=>…, "created_at"=>…, "updated_at"=>…}
。但customer.address.attributes
输出正确的哈希值,因此关联似乎是正确的。
所以,我有一个有效地址的正确客户,并希望得到一个包含所有属性的哈希,所以我可以测试e。 G。在我的控制器规范中创建客户。
post :create, {customer: !?!?!?}
以下是我的模型,为了完成:
class Customer < ActiveRecord::Base
has_one :address, foreign_key: :entity_id
validates_presence_of :address
accepts_nested_attributes_for :address
end
class Address < ActiveRecord::Base
belongs_to :customer, foreign_key: :entity_id
end
答案 0 :(得分:1)
FactoryGirl不支持此功能。请在此处查看此问题:https://github.com/thoughtbot/factory_girl/issues/359
我认为这不是一个很大的问题。写下这个:
FactoryGirl.attributes_for(:customer, address: FactoryGirl.attributes_for(:address))