Ruby on rails rails:rake填充数据

Ruby on rails rails:rake填充数据,ruby-on-rails,Ruby On Rails,我有很多有标签的用户,还有很多有标签的帖子 我想在运行rake db:populate时自动填充数据库。这是我在lib/tasks下的代码: 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.ea

我有很多有标签的用户,还有很多有标签的帖子

我想在运行rake db:populate时自动填充数据库。这是我在lib/tasks下的代码:

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  

但是,问题是UseSR和Post不共享相同的标记,因为每次都会创建一个新标记。有没有办法通过ID引用以前创建的标记,这样我就不会每次都创建新标记?

您的micropost是否与用户关联?如果是这样,则使用该关联为两者设置标记

如果没有,请重新组合代码,生成一个标记,然后将同一标记与用户和micropost关联。
或者首先标记您的用户,然后遍历用户并将用户标记放在MicroPost上。

我想我会使用以下内容:

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

这正是你需要的吗?这是演示/测试数据,对吗?

您是否尝试在第二个循环中查找或创建而不是创建?不确定我是否理解您的应用程序的结构。用户为micropost创建标记?正确吗?与用户关联的标签与与与帖子关联的标签不同。用户的标签类似于“技能”,而标签只是帖子的标签