2014-07-25 31 views
10

我有一個用戶模型和一個跟隨者模型,這樣用戶可以有很多關注者。所以在追隨者模型的模式中,我有user_id列和一個follower_by_user_id列。所以在追隨者模型中,用戶可以跟隨很多追隨者。用戶標識存儲在user_id列中,而追隨者標識的標識存儲爲followed_by_user_id。如何在FactoryGirl中處理外鍵

class User < ActiveRecord::Base 
has_many :followed_users, :class_name => 'Follower', :foreign_key => 'user_id' 
has_many :followers, :class_name => 'Follower', :foreign_key => 'followed_by_user_id' 

validates :email, presence: true, format:{ with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i} 

validates :name,presence:true 
end 

以上是用戶模型

class Follower < ActiveRecord::Base 
belongs_to :user 
belongs_to :followed_by_user, :class_name => 'User', :foreign_key => 'followed_by_user_id' 

validates :user, :followed_by_user, presence:true 
validates_associated :user, :followed_by_user 
end 

以上是跟隨模型

FactoryGirl.define do 
factory :user do 
    name {Faker::Name.name} 
    email {Faker::Internet.email} 
end 

factory :follower do 
    user 
    followed_by_user_id 
end 

followed_by_user_id只是基本上是一個用戶ID,或者我們可以說user_id是用於followed_by_user_id列外鍵。 im簡單英語followed_by_user_id是跟隨其他用戶的用戶的ID。因此,如果任何機構可以幫助如何將follower_by_user_id列的follower工廠中包含這種外鍵關係?

在此先感謝。

回答

15

您可以在工廠使用association,像這樣(在docs更多信息):

association :followed_by_user, factory: :user 
+1

非常感謝。它拯救了我的生命。 –

0

你並不需要那麼多的複雜性,只使用:

followed_by_user factory: :user 

該作品像一個魅力。