【发布时间】:2018-02-22 11:16:44
【问题描述】:
找不到FactoryBot拒绝建立与具有has_and_belongs_to_many关系的同一模型关联的工厂的原因。
产品型号:
class Product < ApplicationRecord
#...
has_and_belongs_to_many :refs,
class_name: "Product",
join_table: :refs,
foreign_key: :from_id,
association_foreign_key: :to_id,
dependent: :destroy
after_destroy :destroy_inverse_refs
#...
end
参考型号:
class Ref < ActiveRecord::Base
#...
belongs_to :from, class_name: 'Product', foreign_key: 'from_id'
has_one :to, class_name: 'Product', foreign_key: 'id', primary_key: 'to_id'
end
工厂:
FactoryBot.define do
factory :ref do
association :from, factory: :product
association :to, factory: :product
end
end
找不到这个工厂建立的原因:从与 id 的关联和:到没有它的关联:
ref = FactoryBot.build(:ref)
puts ref.inspect
#<Ref id: nil, from_id: 8965, to_id: nil, created_at: nil, updated_at: nil>
puts ref.from.inspect
#<Product id: 8965, category_id: 12167, name_en: "Product name 1">
puts ref.to.inspect
#<Product id: nil, category_id: 12168, name_en: "Product name 2">
【问题讨论】:
标签: ruby-on-rails rspec associations factory-bot