【问题标题】:Rails factories having multiple associations to same objectRails 工厂与同一个对象有多个关联
【发布时间】:2019-01-01 06:29:49
【问题描述】:

我有一个具有如下关联的模型:-

 class Order < ApplicationRecord
  belongs_to :customer, inverse_of: :orders
  belongs_to :user, inverse_of: :orders
  belongs_to :shipping_address, class_name: "Customer::Address", inverse_of: :shipped_orders
  belongs_to :billing_address, class_name: "Customer::Address", inverse_of: :billed_orders
end

另外,customer_address 有一个字段 customer_id。我的工厂是这样的:-

FactoryGirl.define do
  factory :order do 
    customer
    user
    association :shipping_address, factory: :customer_address, customer_id: customer.id 
    association :billing_address, factory: :customer_address, customer_id: customer.id
  end
end

但我无法访问 customer.id。我收到此错误:-

undefined method `id' for #<FactoryGirl::Declaration::Implicit:0x007fa3e6979d70>

如何将 customer.id 传递给 shipping_address 和 billing_address 关联?

【问题讨论】:

    标签: ruby-on-rails ruby testing ruby-on-rails-5 factory


    【解决方案1】:

    您可以使用after(:build) 回调来构建您的customer_address 记录。

    FactoryGirl.define do
        factory :order do 
            association :customer
            association :user
            after(:build) do |order|
                order.shipping_address = FactoryGirl.build(:customer_address, customer_id: order.customer_id)
                order.billing_address = FactoryGirl.build(:customer_address, customer_id: order.customer_id)
            end
        end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多