2016-10-05 5 views
0

Я использую Factory Girl с чертами, и пытаюсь выяснить, как установить значение «ответа» ниже:Как установить значение в FactoryGirl для вложенной структуры

factory :example_factory do 
    user 'TEST' 
    id 'blah' 
end 

trait :example_trait do 
questions [ 
       { 
        question: "blah", 
        answer: "#{answer}" 
       }, 
      ] 
end 

Я попытался следующий, но продолжайте работать в «ArgumentError: признак не зарегистрирован: ответ».

FactoryGirl.build(:example, :example_trait, answer: 'custom') 

попытался также добавлять transient { answer ' ' } к черту.

Также попытался добавить attr_accessor к классу Example.

class Example 
    attr_accessor :questions, :answer 
end 
+0

В этом случае модель 'has_many: questions'? – Makoto

+0

В этом случае нет, только один вопрос внутри этого массива ... это для автоматического теста, в приложении может быть несколько вопросов. – zmorris

+0

Возможно, вы неправильно поняли мой вопрос. Стиль фабрики, который вы используете, подразумевает, что это поддерживается определенной моделью ActiveRecord. Тогда мой вопрос будет, не так ли, что эта конкретная модель поддерживает несколько вопросов в ней (даже если тест только требует один прямо сейчас)? – Makoto

ответ

0

Я понял это. С FactoryGirl при динамическом настройке атрибута вы должны обернуть атрибут в {}. Поскольку это массив, с внутренним хешем, фигурные скобки должны находиться снаружи всего массива.

factory :example_factory do 
    transient do 
    ans '' 
    end 

    user 'TEST' 
    id 'blah' 
end 

trait :example_trait do 
questions --> {[ 
       { 
       question: "blah", 
       answer: ans 
       }, 
       ]} <-- 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^