如何在种子数据中创建相同的记录X次?

时间:2013-09-30 15:53:55

标签: ruby-on-rails ruby ruby-on-rails-4

我是Rails(4.0.0)和Ruby(2.0.0)的新手,想知道如何给每个用户提供十次相同的书。首先,我创建了三个用户:

user1 = User.create(name: "Fred")
user2 = User.create(name: "Bob")
user3 = User.create(name: "Ron")

现在我想给所有三个用户一本十本书来测试我的应用程序。所以我从这开始:

book = Book.create(title: "My Book")

我迷失了如何做each并分配用户。你知道怎么?在这种情况下,质量分配安全无关紧要,只需要数据进行视图测试。

3 个答案:

答案 0 :(得分:7)

User.all.find_each do |user|
  10.times { |i| user.books << Book.create!(title: "Book number #{i}") }
end

答案 1 :(得分:5)

这将查看所有用户,然后为每个用户循环10次,每次创建一本书(因此创建10本书)。

[user1, user2, user3].each do |user|
  10.times do |i|
    Book.create!(title: "Book ##{i}")
  end
end

答案 2 :(得分:3)

如果要跳过mass_assignment保护

,请使用without_protection
[user1, user2, user3].each do |user|
  10.times do |i|
    Book.create!({title: "Book ##{i}"}, :without_protection => true)
  end
end