Question

I can't figure out why this code is not populating my sqlite database. I am using the faker gem with rails 3.2 and am trying to make a twitter like application. Can anyone find the problem?

    namespace :db do
      desc "Fill database with sample data"
      task populate: :environment do
       def make_users
            User.create!(name: "Example User",
                         email: "example@example",
                         password: "foobar",
                         password_confirmation: "foobar")
            99.times do |n|
              name  = Faker::Name.name
              email = "example-#{n+1}@example.org"
              password  = "password"
              User.create!(name: name,
                           email: email,
                           password: password,
                           password_confirmation: password)
            end
        end

        def make_microposts
            users = User.all(limit: 6)
            50.times do
              content = Faker::Lorem.sentence(5)
              users.each { |user| user.microposts.create!(content: content) }
            end
        end

        def make_relationships
            users = User.all
            user = users.first
            followed_users = users[2..50]
            followers      = users[3..40]
            followed_users.each { |followed| user.follow!(followed) }
            followers.each      { |follower| follower.follow!(user) }
        end

      end
    end
Was it helpful?

Solution

I figured out the answer actually. Here is the correct code:

    namespace :db do
      desc "Fill database with sample data"
      task populate: :environment do
        make_users
        make_microposts
        make_relationships
      end
    end

    def make_users
      User.create!(name:     "Example User",
                           email:    "example@railstutorial.org",
                           password: "foobar",
                           password_confirmation: "foobar")
      99.times do |n|
        name  = Faker::Name.name
        email = "example-#{n+1}@railstutorial.org"
        password  = "password"
        User.create!(name:     name,
                     email:    email,
                     password: password,
                     password_confirmation: password)
      end
    end

    def make_microposts
      users = User.all(limit: 6)
      50.times do
        content = Faker::Lorem.sentence(5)
        users.each { |user| user.microposts.create!(content: content) }
      end
    end

    def make_relationships
      users = User.all
      user  = users.first
      followed_users = users[2..50]
      followers      = users[3..40]
      followed_users.each { |followed| user.follow!(followed) }
      followers.each      { |follower| follower.follow!(user) }
    end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top