I have the following loop:
(1..1000).each do |i|
user1 = User.create(:name => "Bob#{i}")
...
end
How can I let the variable name user1
vary dynamically using i
to get:
user1 == Bob1
user2 == Bob2
user3 == Bob3
I have the following loop:
(1..1000).each do |i|
user1 = User.create(:name => "Bob#{i}")
...
end
How can I let the variable name user1
vary dynamically using i
to get:
user1 == Bob1
user2 == Bob2
user3 == Bob3
You can't, but you can use a Hash
to get a similar result:
(1..1000).each_with_object({}) do |i, users|
users["user#{i}"] = User.create(:name => "Bob#{i}")
end
If you need to access the hash outside the block, just assign it to a variable:
users = (1..1000).each_with_object({}) { |i, users| users["user#{i}"] = User.create(:name => "Bob#{i}") }
And access a specific user (e.g. user1
) like this:
users["user1"]
Or you could use only i
as a key:
users = (1..1000).each_with_object({}) { |i, users| users[i] = User.create(:name => "Bob#{i}") }
And access a specific user (e.g. user1
) like this:
users[1]