2011-01-23 4 views
0

私はタグを持つ多くのユーザーと、タグを持つ多くの投稿を持っています。rails:rake populating data

私はrake db:populateを実行するときに自分のデータベースを自動集計したいと思います。これは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

2回目のループでcreateではなくfind_or_createを試しましたか? – apneadiving

+0

あなたのアプリの構造を理解しているかわかりません。ユーザーがマイクロポスト用のタグを作成しますか?あれは正しいですか? – polarblau

+0

@polarblau、yes thats true – SuperString

答えて

1

私はこの線に沿って何かを使用したいと思いますか?デモ/テストデータですよね?

0

あなたのマイクロポストはユーザーに関連付けられていますか?そうであれば、その関連付けを使用して両方のタグを設定します。

コードを再編成し、タグを生成してから、同じタグをユーザーとマイクロポストに関連付けます。 またはまずユーザーにタグを付け、ユーザーを繰り返し、ユーザーのタグをマイクロポストに配置します。

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 

ん何が必要DOE:

+0

ユーザーに関連付けられたタグは、投稿に関連付けられたタグとは異なります。 – SuperString

+0

ユーザーのタグは「スキル」と似ていますが、タグは投稿のタグだけです – SuperString