has_oneプロファイルのユーザーモデルがあります。このようにユーザーを作成すると、プロファイルが自動的に作成されます。
class User < ActiveRecord::Base
has_one :profile, dependent: :destroy
after_create :create_profile
end
class Profile < ActiveRecord::Base
belongs_to :user
end
これはすべてうまく機能し、デフォルトのプロファイルがすべてのユーザーで作成されます。
私は自分のユーザーモデルのテストをしたいのですが、これは私が苦労しているところです。
FactoryGirlを使用していて、そのようなユーザーを作成したい
FactoryGirl.define do
factory :user do
sequence(:email) {|n| "user_#{n}@example.com"}
sequence(:username) {|n| "user_#{n}"}
password "secret"
factory :activated_user do
before(:create) {|user| user.activated = true}
association :profile, factory: :profile_for_activated_user
end
end
end
FactoryGirl.define do
factory :profile do
factory :profile_for_activated_user do
first_name "Johnny"
last_name "User"
end
end
end
これは私にとって物事がうまくいかないところです。after_createコールバック(私が欲しい)は、FactoryGirl(on FactoryGirl.create :activated_user
)によって作成された関連付けをオーバーライドするため、プロファイルが空白になり、テストに失敗します。モデルで関連付けを作成する方法を変更する必要がありますか(テストツールに合わせてコードを変更する必要はありません)、またはFactoryGirlでこれを管理する方法はありますか?FactoryGirlでユーザーを作成した後、テストでプロファイル属性を手動で割り当てる必要がありますか?