Rails 3, Rspec / Cucumber и Factory Girl: нет ошибки метода для вложенных / связанных объектов - PullRequest
1 голос
/ 30 апреля 2011

Я какое-то время стучал головой об стену, и я не могу заставить ее работать.У меня есть три модели:

class Instrument < ActiveRecord::Base
  has_many :analytical_methods
  has_many :analytes, :through => :analytical_methods
  accepts_nested_attributes_for :analytical_methods  
  attr_accessible :name, :analytical_methods_attributes
end

class AnalyticalMethod < ActiveRecord::Base
  belongs_to :instrument
  has_many :analytes
  accepts_nested_attributes_for :analytes  
  attr_accessible :name, :analytes_attributes
end

class Analyte < ActiveRecord::Base
  belongs_to :analytical_method
  attr_accessible :name
end

И у меня есть следующие фабрики:

Factory.define :analyte do |analyte|
  analyte.name "Test analyte"
end  

Factory.define :analytical_method do |analytical_method|
  analytical_method.name "Test method"
  analytical_method.association :analyte
end  

Factory.define :instrument do |instrument|
  instrument.name "Test instrument"
  instrument.association :analytical_method
  instrument.association :analyte
end

Каждый раз, когда я пытаюсь перейти на Фабрику (: инструмент) или Фабрику (: analysis_method), он выдаетследующая ошибка:

NoMethodError:  
  undefined method `analyte=' for #<AnalyticalMethod:0x00000104c44758>

Мне не хватает какой-то нелепой опечатки или чего-то еще?Сайт работает отлично, но тесты не проходят.Спасибо за любую помощь в возвращении моего здравомыслия!

1 Ответ

1 голос
/ 30 апреля 2011

Я полагаю, это потому, что вы используете instrument.association :analyte и analytical_method.association :analyte для отношения has_many. Декларация ассоциации используется для отношений принадлежащих_то.

Обычно я не использую Factory Girl для создания has_many отношений, но если вы решите пойти по этому пути, вы не первый, кто сделает это. Вот запись в блоге , которой несколько лет, но, кажется, она описывает то, что вы пытаетесь сделать.

...