2014-01-06 2 views
1

Так что у меня завод:Можно ли определить метод на заводе завод Девушка, которая не в соответствующей активной :: Запись модели 1

factory :person do 
    password_string { Faker::Lorem.words(3).join } 

    after(:create) do |object| 
     object.password = object.password_hash(object.password_string) 
     object.save! 
    end 
end 

И я получаю ошибку:

NoMethodError: 
     undefined method `password_string=' for #<Person:0xe1cdf00> 

Ожидается, но я хочу определить password_string для моей тестовой среды (в основном, чтобы я мог издеваться над подписанным пользователем). Есть ли способ обойти NoMethodError, определяя атрибуты, которые уникальны для фабрики?

Thanks,

ответ

3

Да, вы можете! Обычно вы ставите их на черту, не уверен, можете ли вы поставить их на простой завод или нет.

trait :with_password_string do 
    ignore do 
    password_string nil 
    end 

    after(:build) do |content, evaluator| 
    if evaluator.password_string 
     content.password = content.password_hash(evaluator.password_string) 
    end 
    end 
end 
+0

совершенным, спасибо! – shicholas

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