15

ユーザーが多くのフォロワーを持つことができるように、ユーザーモデルとフォロワーモデルがあります。したがって、フォロワー モデルのスキーマには、user_id 列と follower_by_user_id 列があります。したがって、フォロワーモデルでは、ユーザーは多くのフォロワーにフォローされる可能性があります。ユーザー ID は user_id 列に保存され、フォロワー ID は、その ID が followed_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 は基本的にユーザー ID のみです。または、user_id は followed_by_user_id 列の外部キーであると言えます。平易な英語 followed_by_user_id は、他のユーザーをフォローしているユーザーの ID です。では、この外部キー関係を follower_by_user_id 列のフォロワー ファクトリに含める方法を支援できる団体があれば、

前もって感謝します。

4

2 に答える 2

25

次のように工場で使用できます(ドキュメントassociationの詳細情報):

association :followed_by_user, factory: :user
于 2014-07-25T20:23:15.937 に答える
4

それほど複雑にする必要はありません。使用するのは次のとおりです。

followed_by_user factory: :user

これは魅力のように機能します。

于 2017-03-23T10:55:01.150 に答える