2011-01-23 16 views
0

我有很多有標籤的用戶,還有很多有標籤的帖子。rails:rake populating data

我想運行rake db時自動填充數據庫:填充。這是我的下的lib /任務代碼:

def make_tags 
    User.all.each do |user| 
     5.times do |n| 
     name = Faker::Company.bs 
     user.tags.create!(:name => name) 
     end 

    end 
    Micropost.all.each do |micropost| 
     3.times do |n| 
     name = Faker::Company.bs 
     micropost.tags.create!(:name => name) 
     end 
    end 

然而問題是,usesrs和崗位不共享相同的標籤,因爲一個新的標籤,每次創建。有沒有辦法通過它們的ID引用先前創建的標籤,並且我不會每次都創建新的標籤?

+0

你試過find_or_create而不是在第二個循環中創建嗎? – apneadiving 2011-01-23 10:44:35

+0

不知道我是否瞭解您的應用程序的結構。用戶爲微博創建一個標籤?那是對的嗎? – polarblau 2011-01-23 11:19:20

回答

1

我想我會用的東西沿着這行:能源部你需要什麼

User.all.each do |user| 
    5.times do |n| 
    name = Faker::Company.bs 
    micropost = Micropost.find(:first, :offset => rand(Micropost.count)) 
    user.tags.create!(:name => name, :micropost => micropost) 
    end 
end 

呢?它是演示/測試數據,對不對?

0

您的微博是否與用戶關聯?如果這樣使用該關聯爲兩者設置標籤。

如果沒有,重新組合您的代碼,生成一個標籤,然後將相同的標籤關聯到用戶和微博。 或者首先標記您的用戶,然後遍歷用戶並將用戶標記添加到微博。