user4384354
user4384354

Reputation:

Rake db:seed rake aborted! ActiveRecord::RecordInvalid: Validation failed: Email has already been taken

I'm a beginning rails student at OneMonth learning stripe payments. Right now, I'm learning how to create a product table and seed the database. Everything's been smooth so far until I encountered a problem after running rake db: seed

Davids-MBP-2:one_month_stripe_payments DKP$ rake db:seed rake aborted! ActiveRecord::RecordInvalid: Validation failed: Email has already been taken /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/validations.rb:79:in raise_record_invalid' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/validations.rb:43:insave!' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/attribute_methods/dirty.rb:29:in save!' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/transactions.rb:291:inblock in save!' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:184:in within_new_transaction' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/transactions.rb:220:in transaction' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/transactions.rb:348:inwith_transaction_returning_status' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/transactions.rb:291:in save!' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/persistence.rb:51:increate!' /Users/DKP/Desktop/one_month/one_month_stripe_payments/db/seeds.rb:8:in <top (required)>' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:inload' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in block in load' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:inload_dependency' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in load' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/railties-4.2.5/lib/rails/engine.rb:547:inload_seed' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/tasks/database_tasks.rb:250:in load_seed' /Users/DKP/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5/lib/active_record/railties/databases.rake:183:inblock (2 levels) in ' /Users/DKP/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in eval' /Users/DKP/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in' Tasks: TOP => db:seed (See full trace by running task with --trace)

I've tried rake db: reset, then rake:db migrate, then rake db: seed again. But i still have the same error.

Could anyone help me with this problem please? I'm feeling stuck and I'm not sure what to do.

Thanks so much!

Upvotes: 4

Views: 5950

Answers (2)

Lavika
Lavika

Reputation: 530

'Email has already been taken' means you have a record with the same email already present.

Do Rails console and check if the records are there or not. If not, do rake db:drop -> rake db:create -> rake db:migrate -> rake db:seed. This will solve your problem.

Upvotes: 3

Jefferson
Jefferson

Reputation: 1559

When you do rake db:reset, what rails does is rake db:drop -> rake db:create -> rake db:migrate -> rake db:seed.

You DO NOT need to rake db:seed again.

you can check your console by doing rails c and see if you seed data is already inside. Product.all

Upvotes: 4

Related Questions