Search code examples
ruby-on-railsarraysruby-on-rails-4seeding

Unique item from array when seeding data in Rails


I was wondering how I could select a random item from an array each time I create a record when seeding.

I know to select a random item, I can use

array_one = ["one", "two", "three"]
array_one.sample
one

Or if I want to select each value one time only (sample takes an argument)

array_one = ["one", "two", "three"]
array_one.sample(3)
["two", "one", "three"]

But how would I do it in the following circumstance

email_address_array = ['myaddress@email.com', 'myaddress1@email.com', 'myaddress2@email.com']

3.times {
  user = User.create({
    email: email_address_array.sample ## not sure how to set this up  
  })
}

Solution

  • Assuming your array has no duplicate values, you can do:

    User.create(email: email_address_array.delete(email_address_array.sample))
    

    This will return a random entry from the array while also deleting it from that array. This also assumes you don't need the array again later in your seeds file.