LoginSignup
1
1

More than 5 years have passed since last update.

Rails: FactoryGirlでafter_createで自動生成される関連モデルを作る

Posted at

ユーザーにユーザーの詳細プロフィールがぶら下がってるような1対1のモデル(DB設計)

models/user.rb
class User < ActiveRecord::Base

  has_one :profile, class_name: 'UserProfile', dependent: :destroy, inverse_of: :user  

  after_create do |record|
    UserProfile.create(user: record)
  end
# (略)

ユーザに対して、詳細プロフィールをafter_createでプロフィールを生成するときのFactoryGirl

spec/factories/user.rb
FactoryGirl.define do
  factory :user do
    # (略)
    after(:create) do |user|
      profile = UserProfile.find_by(user: user)
      profile.update!(attributes_for(:user_profile))
    end
  end
end

associationで書くとmodel本体のafter_createが走ってしまうので、
一旦after_createで生成してから、profileのattributeをupdateで埋めています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1