2016-12-03 54 views
0

我想種子我的數據庫項目與獨特的項目名稱,但我的播種機不工作,因爲我的意圖。播種與獨特的對象

Seed.rb

users = User.order(:created_at).take(6) 
50.times do |n| 
name = "project-#{n+1}" 
category = "category-#{n+1}" 
users.each { |user| user.projects.create!(name: name, category: category) } 
end 

如果我刪除validates :name, presence: true, uniqueness: true將創建50個項目爲每個用戶從1到50,但隨後下一個用戶會做同樣的(計數重置),將創建項目從1到50的標題會干擾驗證規則。

任何想法?

+0

相反,你在你的問題說,它沒有爲用戶創建50個項目,然後移動到下一個用戶。您正在評估項目和類別名稱,然後爲每個用戶(每次迭代6次)創建項目。正如Alex所說的,你需要爲他的名字提供額外的範圍,正如他的回答所暗示的那樣。 – David

回答

1

你可以得到最後project_id和它的初始計數器。超過user.id作爲附加範圍。

last_id = Project.last.try(:id) || 1 
50.times do |n| 
    name = "project-#{last_id+n}" 
    category = "category-#{last_id+n}" 
    users.each do |user| 
    user.projects.create!(name: ("#{name}-#{user.id}"), category: ("#{category}-#{user.id}")) 
    end 
end 

太多,你可以添加randTime.now.to_f.to_sSecureRandom.hex(5)

+0

感謝您的回答亞歷克斯,但是,你忘了定義user_id作爲代碼不拾起它,所以我決定繼續嘗試'user_id = User.id',但它是不正確的,你能幫我嗎? – Eltorero1992

+0

是的,我的錯字。使用'user.id'而不是'user_id' –

+0

答案更新 –