Подтвердить что ты не робот

Как обращаться с внешним ключом в FactoryGirl

У меня есть модель пользователя и модель последователя, так что у пользователя может быть много последователей. Итак, в схеме модели последователя у меня есть столбец 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

follow_by_user_id - это в основном только идентификатор пользователя, или мы можем сказать, что user_id является внешним ключом для столбца follow_by_user_id. Im plain English follow_by_user_id - это идентификатор пользователя, который следит за другим пользователем. Итак, если какой-либо орган может помочь включить это отношение внешнего ключа в последователь factory для столбца follower_by_user_id?

Спасибо заранее.

4b9b3361

Ответ 1

Вы можете использовать association в factory, как это (подробнее в docs):

association :followed_by_user, factory: :user

Ответ 2

Вам не нужно столько сложностей, просто используйте:

followed_by_user factory: :user

Это работает как шарм.