У меня есть следующие модели:Использование рассола с огурцами и factory_girl создать связанные модели и передавать параметры через к вложенной модели
class User < ActiveRecord::Base
has_one :profile, :dependent => :destroy
def before_create
self.profile ||= Profile.new
end
end
class Profile < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :name
end
И у меня есть следующие заводы:
Factory.define :user do |user|
user.email { Factory.next :email }
user.association :profile
end
Factory.define :profile do |profile|
profile.name 'Name'
end
Так что это это моя функция:
Given a profile: "John" exists with name: "John"
And a user: "John" exists with profile: profile "John"
Есть ли способ улучшить это? Я хотел бы быть в состоянии написать что-то вроде этого:
Given a user: "John" exists with a profile: profile "John" exists with name: "John"
И это создает что-то вдоль линий:
Factory(:user, :profile => Factory(:profile, :name))
его почти что мне нужно вложенную Искателя. Можете ли вы предложить шаг для этого?
Или вы можете предложить альтернативный способ достижения этого?
Я немного смущен вашими моделями. «Пользователь» не имеет столбца «name», но вы имеете в виду пользователя «Джон» в вашей функции. Означает ли это, что вы проверяете столбец 'name' в соответствующем' Profile'? Может быть, вы могли бы подумать над идеей этого дизайна. – zetetic
Мысль за дизайном заключалась в том, чтобы отделить пользовательский профиль и учетную запись от пользователя, однако огромные проблемы, с которыми я столкнулся при попытке написать тесты для такого дизайна, говорят мне о том, что что-то не так. Я думаю, что было бы разумнее просто сбрасывать все в таблицу пользователей/модель и делать с ней. – ktec