背景
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