Skip to content

Seeding invitable model without sending invitation emails

Sergio Cambra edited this page Sep 20, 2013 · 5 revisions

Some might consider it useless noise to fire off invitation emails when seeding an invitable model.

Here's how to prevent that:

    # put this in db/seeds.rb or equivalent
    def adduser(email, password)
      @user = User.invite!(:email => email) do |u|
        u.skip_invitation = true
      end
      token = Devise::VERSION >= "3.1.0" ? @user.instance_variable_get(:@raw_invitation_token) : @user.invitation_token
      User.accept_invitation!(:invitation_token => token, :password => password, :password_confirmation => password)

      puts "Created User #{email} with password #{password}"
      @user
    end

    user1 = adduser("user@example.com", "123456")
    user2 = adduser("user2@example.com", "123456")
    user3 = adduser("user3@example.com", "123456")

    # hmmm... same passwords? Naughty seeds! ;)