LoginSignup
1
1

More than 5 years have passed since last update.

FACTORYGIRL ASSOCIATIONS

Last updated at Posted at 2015-01-24

背景

FactoryGrirlで、 下記の特徴のモデルに対して、データを生成したいです。

  • belongs_to関係がある
  • belongs_toの対象モデルが別名で定義している

モデル: User and Message の関係

class Message < ActiveRecord::Base
  # 送信者userを別名senderにする
  belongs_to :sender, class_name: "User", foreign_key: :from_user_id
  # 受信者userを別名recipientにする  
  belongs_to :recipient, class_name: "User", foreign_key: :to_user_id
end

class User < ActiveRecord::Base
  has_many :sent_messages, class_name: "Message", foreign_key: :from_user_id
  has_many :received_messages, class_name: "Message", foreign_key: :to_user_id
end

FactoryGirlで下記のように記述したいです:

FactoryGirl.create(:message, sender: @user1, recipient: @user2)

解決方法

factory :message do
  content "A message for you, Rudy!"
  association :sender
  association :recipient
end

その他

message データを生成たびに、ユーザを新規作成したいなら

FactoryGirl.create(:message)
factory :message do
  content "A message for you, Rudy!"
  association :sender, factory: :user
  association :recipient, factory: :user
end
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