Reputation:
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:in
save!'
/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:in
block 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:in
block 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:in
transaction'
/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:in
with_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:in
create!'
/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:in
load'
/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:in
load_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:in
load_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:in
block (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
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
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