Ruby on rails 3.2 与未定义的方法错误关联的制造gem

Ruby on rails 3.2 与未定义的方法错误关联的制造gem,ruby-on-rails-3.2,rspec-rails,fabrication-gem,Ruby On Rails 3.2,Rspec Rails,Fabrication Gem,我已经开始与RSpec一起使用制造宝石,总的来说已经取得了巨大的成功。然而,我似乎无法让协会运作起来 我使用的是Ruby 1.9.3、Rails 3.2.12、RSPec 2.13.0和Fabrication 2.7.0 模型 class RedistributionSale < ActiveRecord::Base belongs_to :account belongs_to :customer has_many :red_sale_itemisations, :depen

我已经开始与RSpec一起使用制造宝石,总的来说已经取得了巨大的成功。然而,我似乎无法让协会运作起来

我使用的是Ruby 1.9.3、Rails 3.2.12、RSPec 2.13.0和Fabrication 2.7.0

模型

class RedistributionSale < ActiveRecord::Base

  belongs_to :account
  belongs_to :customer
  has_many :red_sale_itemisations, :dependent => :destroy
  has_many :materials, :through => :red_sale_itemisations


class RedSaleItemisation < ActiveRecord::Base
  belongs_to :redistribution_sale
  belongs_to :material
在这一点上,我可以独立制作这两个模型中的任何一个。但是我想同时构建它们来测试所有的模型代码

我有以下测试

it "returns correct unit prices with" do

  material_1 = Fabricate(:material, l1price: 7.7, l2price: 8.8, discount: false)

  redistribution_sale = Fabricate(:redistribution_sale, ) do
    red_sale_itemisations { Fabricate(:red_sale_itemisation, material_id: material_1.id, quantity: 2 ) }
  end
  expect(redistribution_sale.total_value).to eq 17.6

end
但是,我得到了以下错误

Failures:

  1) RedistributionSale calculated fields returns correct unit prices with
     Failure/Error: redistribution_sale = Fabricate(:redistribution_sale) do
     NoMethodError:
       undefined method `each' for #<RedSaleItemisation:0x00000008308d58>
     # ./spec/models/redistribution_sale_spec.rb:87:in `block (3 levels) in <top (required)>'
故障:
1) 重新分配销售计算字段返回正确的单价
失败/错误:重新分配销售=制造(:重新分配销售)do
命名错误:
未定义的方法“each”#
#./spec/models/redistribution\u sale\u spec.rb:87:in'block(3层)in'
这是以前见过的,还是我做错了什么可怕的事


迈克尔

我认为这是一个虚构的错误。您现在可以通过将
red\u sale\u itemisations
的内容包装在一个数组中来克服此错误,如下所示:

it "returns correct unit prices with" do

  material_1 = Fabricate(:material, l1price: 7.7, l2price: 8.8, discount: false)

  redistribution_sale = Fabricate(:redistribution_sale, ) do
    red_sale_itemisations { [Fabricate(:red_sale_itemisation, material_id: material_1.id, quantity: 2 )] }
  end
  expect(redistribution_sale.total_value).to eq 17.6

end
it "returns correct unit prices with" do

  material_1 = Fabricate(:material, l1price: 7.7, l2price: 8.8, discount: false)

  redistribution_sale = Fabricate(:redistribution_sale, ) do
    red_sale_itemisations { [Fabricate(:red_sale_itemisation, material_id: material_1.id, quantity: 2 )] }
  end
  expect(redistribution_sale.total_value).to eq 17.6

end