【问题标题】:How to handle foreign key in FactoryGirl如何在 FactoryGirl 中处理外键
【发布时间】:2014-09-17 18:51:50
【问题描述】:

我有一个用户模型和一个关注者模型,这样一个用户可以有很多关注者。因此,在追随者模型的架构中,我有 user_id 列和 follower_by_user_id 列。所以在追随者模型中,一个用户可以被许多追随者关注。用户 id 存储在 user_id 列中,关注者 id 的 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 基本上只是一个用户ID,或者我们可以说user_id 是followed_by_user_id 列的外键。 Implain English follow_by_user_id 是跟随其他用户的用户的 id。那么是否有任何机构可以帮助如何在 follower_by_user_id 列的关注者工厂中包含这个外键关系?

提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 factory-bot faker


    【解决方案1】:

    你可以在你的工厂使用association,像这样(更多信息在docs):

    association :followed_by_user, factory: :user
    

    【讨论】:

    • 非常感谢。它救了我的命。
    【解决方案2】:

    您不需要这么复杂,只需使用:

    followed_by_user factory: :user
    

    这就像一个魅力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      相关资源
      最近更新 更多