【发布时间】:2016-01-22 15:52:55
【问题描述】:
我对 FactoryGirl 知之甚少,只创建过没有关联的单唱片工厂。这是我现在拥有的两个用于关联模型的工厂:
factory :help_request do
name "Mrs. Bourque's holiday party"
description "We need volunteers to help out with Mrs. Bourque's holiday party."
end
factory :donation_item do
name "20 Cookies"
end
每当我需要关联两条记录时,我都会在 rspec 中使用如下代码进行关联:
require 'spec_helper'
describe HelpRequest do
let(:help_request) { FactoryGirl.create(:help_request) }
let(:donation_item) { FactoryGirl.create(:donation_item) }
subject { help_request }
before {
donation_item.help_request_id = help_request.id
donation_item.save!
}
通常这是有效的,但现在我确认至少有一个 donation_item 尚未标记为销毁:
class HelpRequest < ActiveRecord::Base has_many :events
has_many :donation_items, dependent: :destroy
validate :check_donation_items?
def has_donation_items?
self.donation_items.collect { |i| !i.marked_for_destruction? }.any?
end
def check_donation_items?
if !has_donation_items?
errors.add :a_help_request, "must have at least one item."
end
end
当我运行我的模型测试时,一切都失败了:
Failure/Error: let(:help_request) { FactoryGirl.create(:help_request) }
ActiveRecord::RecordInvalid:
Validation failed: A help request must have at least one item.
如何在创建help_request 时将捐赠项目直接关联到工厂中?我看到了其他似乎相关的答案,但由于我对 FactoryGirl 的了解非常初级,我无法弄清楚如何让它发挥作用。
【问题讨论】:
标签: ruby-on-rails rspec factory-bot