2014-07-25 12 views
10

Tôi có mô hình người dùng và kiểu người theo dõi, sao cho người dùng có thể có nhiều người theo dõi. Vì vậy, trong lược đồ của mô hình theo dõi tôi có cột user_id và cột follower_by_user_id. Vì vậy, trong mô hình theo dõi người dùng có thể được theo sau bởi nhiều người theo dõi. Id người dùng được lưu trữ trong cột user_id và id người theo dõi có id được lưu trữ trong dạng follow_by_user_id.Cách xử lý khóa ngoại trong 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 

Trên đây là sử dụng mô hình

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 

trên là đi theo mô hình

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 cơ bản là một user id duy nhất, hoặc chúng ta có thể nói user_id là chìa khóa ngoại cho cột followed_by_user_id. Im plain English follow_by_user_id là id của người dùng đang theo dõi một số người dùng khác. Vì vậy, nếu bất kỳ cơ thể có thể giúp làm thế nào để bao gồm mối quan hệ khóa nước ngoài này trong nhà máy theo dõi cho cột follower_by_user_id?

Xin cảm ơn trước.

Trả lời

15

Bạn có thể sử dụng association tại nhà máy của bạn, như thế này (biết thêm trong docs):

association :followed_by_user, factory: :user 
+1

Cảm ơn bạn rất nhiều .. Nó đã cứu mạng tôi. –

0

Bạn không cần quá nhiều phức tạp, sử dụng chỉ:

followed_by_user factory: :user 

tác phẩm này như một say mê.