2016-06-15 25 views
0

我在seed.rb中創建了一堆用於開發目的的數據。現在我意識到,當新用戶在我的網站上註冊時,我基本上需要默認創建相同的數據,所以他沒有空賬戶。什麼是最好的方法來做到這一點?創建用戶的Rails中的種子生產數據

在my seeds.rb中,我創建了一個測試用戶和一堆對象。我可以以某種方式將用戶ID傳遞給Rails.application.load_seed?還是有更好的方法呢?

回答

2

創建用戶時不應調用seeds.rb。相反,seeds.rb應使用生產應用程序使用的相同方法創建初始User相關模型。

我可以看到至少有兩個解決問題的方案:

  1. 使用after_create回調上User創建相關對象。例如:

    class User < ActiveRecord::Base 
        after_create :generate_api_key 
    
        private 
    
        def generate_api_key 
        ApiKey.create!(user: self) 
        end 
    end 
    

    在這種情況下,你seeds.rb可以叫User.create!(login: 'test1')。相關對象將自動創建。

  2. 創建一個服務對象UserRegistrationService負責創建User和它相關的對象,例如:

    class UserRegistrationService 
        def call(user_params) 
        user = User.create!(user_params) 
        ApiKey.create!(user: user) 
        user 
        end 
    end 
    

    在這種情況下,seeds.rb應使用該服務來創建用戶。您應該致電UserRegistrationService.new.call(login: 'test1'),而不是致電User#create!

相關問題