gpt4 book ai didi

ruby-on-rails - 如何访问在 before 子句中创建的 has_many 模型

转载 作者:行者123 更新时间:2023-12-03 23:55:43 24 4
gpt4 key购买 nike

有一个Companyhas_many QuarterValue ,并且我对其进行了 RSpec 测试。

  let(:company) { Company.create }
describe 'company has many quarter values' do
before do
10.times { create(:quarter_value, company: company) }
end
it 'has 10 quarter values' do
expect(company.quarter_values.count).to eq(10)
end
end

测试通过。我的问题是当我把 binding.pry就在 expect 上方匹配器我无法访问 company.quarter_values ,返回空数组 [] .

如何访问 has_many RSpec 中的模型对象使用 binding.pry 进行测试?

规范/工厂.rb
FactoryGirl.define do
factory :company do
sequence(:code) { |n| n + 1000 }
end
factory :quarter_value do
company
end
end

最佳答案

您需要将代码修改为如下所示:

let(:company) { Company.create }
describe 'company has many quarter values' do
before do
10.times { create(:quarter_value, company: company) }
company.reload
end
it 'has 10 quarter values' do
expect(company.quarter_values.count).to eq(10)
end
end

您在开始时创建的公司变量不知道它已被赋予任何 quarter_values .
您需要调用 company.reload用新的关系更新公司,因为 Company 的实例模型未参与 create(:quarter_value, company: company)

关于ruby-on-rails - 如何访问在 before 子句中创建的 has_many 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34481246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com