Ruby on rails 用户创建时Rails中的种子生产数据

Ruby on rails 用户创建时Rails中的种子生产数据,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我在seeds.rb中创建了一组数据,用于开发目的。现在我意识到,当一个新用户在我的网站上注册时,我基本上需要在默认情况下创建相同的数据,这样他就不会有一个空帐户。最好的方法是什么 在myseeds.rb中,我创建了一个测试用户和一组对象。我是否可以将用户id传递给Rails.application.load\u seed?或者有更好的方法吗?您不应该在用户创建时调用seeds.rb。相反,seeds.rb应该使用生产应用程序使用的相同方法创建初始的用户相关模型 我至少可以看到两种解决方案: 使

我在seeds.rb中创建了一组数据,用于开发目的。现在我意识到,当一个新用户在我的网站上注册时,我基本上需要在默认情况下创建相同的数据,这样他就不会有一个空帐户。最好的方法是什么


在myseeds.rb中,我创建了一个测试用户和一组对象。我是否可以将用户id传递给
Rails.application.load\u seed
?或者有更好的方法吗?

您不应该在用户创建时调用
seeds.rb
。相反,
seeds.rb
应该使用生产应用程序使用的相同方法创建初始的
用户相关模型

我至少可以看到两种解决方案:

  • 使用
    User
    上的
    after\u create
    回调创建相关对象。例如:

    class User < ActiveRecord::Base
      after_create :generate_api_key
    
      private
    
      def generate_api_key
        ApiKey.create!(user: self)
      end
    end
    
    在这种情况下,
    seeds.rb
    应该使用该服务来创建用户。而不是调用
    User#create
    您应该调用
    UserRegistrationService.new.call(登录名:'test1')


  • 您不应该在用户创建时调用
    seeds.rb
    。相反,
    seeds.rb
    应该使用生产应用程序使用的相同方法创建初始的
    用户相关模型

    我至少可以看到两种解决方案:

  • 使用
    User
    上的
    after\u create
    回调创建相关对象。例如:

    class User < ActiveRecord::Base
      after_create :generate_api_key
    
      private
    
      def generate_api_key
        ApiKey.create!(user: self)
      end
    end
    
    在这种情况下,
    seeds.rb
    应该使用该服务来创建用户。而不是调用
    User#create
    您应该调用
    UserRegistrationService.new.call(登录名:'test1')