我在seed.rb中創建了一堆用於開發目的的數據。現在我意識到,當新用戶在我的網站上註冊時,我基本上需要默認創建相同的數據,所以他沒有空賬戶。什麼是最好的方法來做到這一點?創建用戶的Rails中的種子生產數據
在my seeds.rb中,我創建了一個測試用戶和一堆對象。我可以以某種方式將用戶ID傳遞給Rails.application.load_seed
?還是有更好的方法呢?
我在seed.rb中創建了一堆用於開發目的的數據。現在我意識到,當新用戶在我的網站上註冊時,我基本上需要默認創建相同的數據,所以他沒有空賬戶。什麼是最好的方法來做到這一點?創建用戶的Rails中的種子生產數據
在my seeds.rb中,我創建了一個測試用戶和一堆對象。我可以以某種方式將用戶ID傳遞給Rails.application.load_seed
?還是有更好的方法呢?
創建用戶時不應調用seeds.rb
。相反,seeds.rb
應使用生產應用程序使用的相同方法創建初始User
相關模型。
我可以看到至少有兩個解決問題的方案:
使用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')
。相關對象將自動創建。
創建一個服務對象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!
。