耙子 db:seed 耙子中止! ActiveRecord::RecordInvalid: 验证失败:电子邮件已被占用
Rake db:seed rake aborted! ActiveRecord::RecordInvalid: Validation failed: Email has already been taken
我是 OneMonth 学习条纹支付的初学者 rails。现在,我正在学习如何创建产品 table 并为数据库播种。到目前为止一切都很顺利,直到我在 运行 rake db: seed
之后遇到问题
Davids-MBP-2:one_month_stripe_payments DKP$ 抽成 db:seed
耙中止!
ActiveRecord::RecordInvalid: 验证失败:电子邮件已被占用
/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
保存!'
/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
交易中的区块'
/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
事务'
/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
'
任务:TOP => db:seed
(使用 --trace 查看 运行 任务的完整跟踪)
我试过 rake db: reset,然后 rake:db migrate,然后再次 rake db: seed。但我仍然有同样的错误。
谁能帮我解决这个问题?我感觉卡住了,我不知道该怎么做。
非常感谢!
当你做 rake db:reset
时,rails 做的是 rake db:drop
-> rake db:create
-> rake db:migrate
-> rake db:seed
。
您不需要再rake db:seed
。
您可以通过执行 rails c
检查您的控制台,看看您的种子数据是否已经在其中。 Product.all
'Email has already been taken' 表示您有一条包含相同电子邮件的记录。
执行 Rails 控制台并检查记录是否存在。
如果不是,则执行 rake db:drop -> rake db:create -> rake db:migrate -> rake db:seed。这将解决您的问题。
我是 OneMonth 学习条纹支付的初学者 rails。现在,我正在学习如何创建产品 table 并为数据库播种。到目前为止一切都很顺利,直到我在 运行 rake db: seed
之后遇到问题Davids-MBP-2:one_month_stripe_payments DKP$ 抽成 db:seed
耙中止!
ActiveRecord::RecordInvalid: 验证失败:电子邮件已被占用
/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
保存!'
/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
交易中的区块'
/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
事务'
/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
'
任务:TOP => db:seed
(使用 --trace 查看 运行 任务的完整跟踪)
我试过 rake db: reset,然后 rake:db migrate,然后再次 rake db: seed。但我仍然有同样的错误。
谁能帮我解决这个问题?我感觉卡住了,我不知道该怎么做。
非常感谢!
当你做 rake db:reset
时,rails 做的是 rake db:drop
-> rake db:create
-> rake db:migrate
-> rake db:seed
。
您不需要再rake db:seed
。
您可以通过执行 rails c
检查您的控制台,看看您的种子数据是否已经在其中。 Product.all
'Email has already been taken' 表示您有一条包含相同电子邮件的记录。
执行 Rails 控制台并检查记录是否存在。 如果不是,则执行 rake db:drop -> rake db:create -> rake db:migrate -> rake db:seed。这将解决您的问题。