我正在尝试使用 FactoryGirl 创建一个具有 Parent has_many Entries 关联的测试数据库。此时,它正在抛出 Parent 不能为空的 ActiveRecord 验证错误。我在这个方面遇到了困难,并且尝试了很多很多方法来创建这个关联的测试数据库。我认为我很接近,但我可能甚至没有接近并且可能有基本错误,因此非常感谢任何和所有建议。
我的猜测是哈希 { parent_id: :id } 没有被传递给 Entry 工厂。那将无法通过验证。但是,我不知道事实是否如此,即使是这样,我也不知道如何解决它。在此先感谢您的帮助...
错误是:
ActiveRecord::RecordInvalid:验证失败:父级不能为空
RSpec 调用是:
before(:all) do
rand(11..25).times { FactoryGirl.create(:parent) }
visit "/parents?direction=asc&sort=parent_blog"
end
after(:all) do
Parent.delete_all
end
父模型是:
class Parent < ActiveRecord::Base
has_many :entries, dependent: :destroy
accepts_nested_attributes_for :entries, :allow_destroy => :true
validates :parent_blog, presence: true,
uniqueness: true
end
入口模型是:
class Entry < ActiveRecord::Base
belongs_to :parent
validates :entry_blog, presence:true,
uniqueness: true
validates :parent_id, presence: true
end
父工厂是:
FactoryGirl.define do
factory :parent do
sequence(:parent_blog) { |n| "http://www.parent%.3d.com/ss" % n }
entries { rand(5..15).times { FactoryGirl.create(:entry, parent_id: :id) } }
end
end
入口工厂是:
FactoryGirl.define do
factory :entry do
sequence(:entry_blog) { |n| "http://www.parent%.3d.com/ss/entry%.3d" % [n, n] }
parent_id { :parent_id }
end
end