【问题标题】:Rails 4 - Why do index records remain after destroy_all?Rails 4 - 为什么在destroy_all之后保留索引记录?
【发布时间】:2016-04-15 07:37:06
【问题描述】:

我的 rails 4 应用中有一个用户模型。

我已经进入我的控制台并完成了:

User.destroy_all

User.count 向我验证没有用户。然后我尝试再次注册,我可以这样做,但是一旦我确认我的电子邮件并尝试登录,我就会收到一条错误消息:

ERROR:  duplicate key value violates unique constraint "index_users_on_email"
DETAIL:  Key (email)=(angus@gmail.com) already exists.

如何修复此索引记录,以便在运行 User.destroy_all 方法时也将其删除?

【问题讨论】:

  • 你使用的是哪个数据库?
  • 这是因为序列..重置你的表序列ALTER SEQUENCE "your_sequence_name" RESTART WITH 0;
  • 你能显示用户表的迁移吗?
  • @uzaif 这是什么意思?我只是在控制台中销毁_all,我希望一切顺利。你的意思是我需要登录到 psql 并更改表?

标签: ruby-on-rails console


【解决方案1】:

为确保您没有此问题,请确保在销毁用户时删除所有相关数据。

class UpdateUserForeignKey < ActiveRecord::Migration
  def change
    remove_foreign_key :users, :email

    add_foreign_key :users, :email, on_delete: :cascade
  end
end

更多关于 Rails 外键的信息 http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_foreign_key

【讨论】:

  • 你好弗拉德。我想也许我们的电线交叉了。我尝试使用控制台销毁用户表中的所有记录。某些内容已被保留,因为虽然我希望表格为空,但我收到上面的错误,表明某些内容已被保留。我不想编写迁移来更改表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多