#ruby-on-rails #cucumber #rspec2 #factory-bot
#ruby-on-rails #cucumber #rspec2 #factory-бот
Вопрос:
Я некоторое время бился головой о стену над этим, и я не могу заставить его работать. У меня есть три модели:
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
Каждый раз, когда я пытаюсь Factory (:instrument) или Factory (:analytical_method), он выдает следующую ошибку:
NoMethodError:
undefined method `analyte=' for #<AnalyticalMethod:0x00000104c44758>
Я пропустил какую-то нелепую опечатку или что-то в этомроде? Веб-сайт работает отлично, но тесты продолжают давать сбои. Спасибо за любую помощь в возвращении моего здравомыслия!
Ответ №1:
Я полагаю, это потому, что вы используете instrument.association :analyte
и analytical_method.association :analyte
для отношения has_many. Объявление ассоциации используется для отношений belongs_to.
Обычно я не использую Factory Girl для создания has_many
отношений, но если вы решите пойти этим путем, вы не первый, кто это делает. Вот сообщение в блоге, которому несколько лет, но, похоже, оно описывает то, что вы пытаетесь сделать.