2014-07-25 10 views
10

में विदेशी कुंजी को कैसे संभाला जाए मेरे पास एक उपयोगकर्ता मॉडल और अनुयायी मॉडल है, जैसे कि उपयोगकर्ता के कई अनुयायी हो सकते हैं। तो अनुयायी मॉडल की स्कीमा में मेरे पास user_id कॉलम और follower_by_user_id कॉलम है। तो अनुयायी मॉडल में एक उपयोगकर्ता कई अनुयायियों द्वारा पीछा किया जा सकता है। उपयोगकर्ता आईडी को user_id कॉलम में संग्रहीत किया जाता है और अनुयायी आईडी हैं जिनके आईडी को follow_by_user_id के रूप में संग्रहीत किया जाता है।फैक्टरीगर्ल

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 मूल रूप से एक प्रयोक्ता आईडी ही है, या हम कह सकते हैं user_id followed_by_user_id स्तंभ के लिए विदेशी कुंजी है। Im plain english then_by_user_id किसी ऐसे उपयोगकर्ता का आईडी है जो किसी अन्य उपयोगकर्ता के लिए अनुसरण कर रहा है। तो अगर कोई शरीर follower_by_user_id कॉलम के लिए अनुयायी कारखाने में इस विदेशी कुंजी संबंध को शामिल करने में मदद कर सकता है?

अग्रिम धन्यवाद।

उत्तर

15

आप अपने कारखाने में association उपयोग कर सकते हैं, इस (docs में अधिक जानकारी) की तरह:

association :followed_by_user, factory: :user 
+1

बहुत बहुत धन्यवाद .. यह मेरे जीवन को बचाया। –

0

तुम इतना जटिलता की जरूरत नहीं है, बस का उपयोग करें:

followed_by_user factory: :user 

यह काम करता है जादू की तरह।

संबंधित मुद्दे