2014-07-25 33 views
10

Bir kullanıcı modelim ve bir takipçi modelim var, böylece bir kullanıcı çok sayıda takipçiye sahip olabilir. Bu nedenle, takipçi modelinin şemasında user_id sütunu ve bir follower_by_user_id sütunu var. Böylece takipçi modelinde bir kullanıcı birçok takipçisi tarafından takip edilebilir. Kullanıcı kimliği, user_id sütununda saklanır ve follower kimlikleri, kimlikleri follow_by_user_id olarak saklanır.FactoryGirl'de yabancı anahtar nasıl kullanılır

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 

Üstü yukarıda

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 sadece temelde bir kullanıcı kimliği olan takipçi modeli

Kullanıcı modeli

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 

, ya biz user_id followed_by_user_id sütun için yabancı anahtar olduğunu söyleyebiliriz. Ben düz İngilizce olan follow_by_user_id, başka bir kullanıcıya izleyen bir kullanıcının kimliğidir. Yani herhangi bir vücut follower_by_user_id sütun için follower fabrikada bu yabancı anahtar ilişki nasıl dahil yardımcı olabilir?

Şimdiden teşekkürler.

association :followed_by_user, factory: :user 

cevap

15

Bir çekicilik gibi.

+1

Çok teşekkür ederim. Hayatımı kurtardı. –

0

O kadar çok karmaşıklığı gerekmez, sadece kullanın::

followed_by_user factory: :user 

Bu eserler bu (docs yılında daha fazla bilgi) gibi, fabrikada association kullanabilirsiniz