Rails times.do назначить переменной экземпляра - PullRequest
0 голосов
/ 10 марта 2020

Как правильно поступить:

@items = 10.times.do
    Item.create(name: Faker::Name)
 end

Создание 10 случайных элементов и присвоение их переменной экземпляра?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

В дополнение к ответу выше вы можете использовать #with_object

@items = 10.times.with_object([]) do |_, res|
  res << Item.create(name: Faker::Name)
end

или даже что-то вроде этого:

@items = Array.new(10) { Item.create(name: Faker::Name) }

благодаря @maxpleaner, еще одно решение:

@items = 10.times.map { Item.create(name: Faker::Name) } 

благодаря @engineersmnky, есть еще несколько решений:

@items = Item.create(10.times.map { {name: Faker::Name}})
1 голос
/ 10 марта 2020

Если вы хотите Array из Item объектов, попробуйте это

@items = []

10.times do 
  @items << Item.create(name: Faker::Name)
end

или , если вам нужно отношение,

item_ids = []

10.times do 
  item_ids << Item.create(name: Faker::Name).id
end

@items = Item.where(id: item_ids)

или , если вы единственный, кто запускает его для отладки в среде разработки, тогда,

10.times do 
  Item.create(name: Faker::Name)
end

@items = Item.order('id DESC').limit(10)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...