2011-01-23 52 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

您的微博是否与用户关联?如果这样使用该关联为两者设置标签。

如果没有,重新组合您的代码,生成一个标签,然后将相同的标签关联到用户和微博。 或者首先标记您的用户,然后遍历用户并将用户标记添加到微博。