Rails 3.1.0 迁移中remove_index 的正确语法是什么?

2024-01-04

我正在将 Devise 添加到现有的 Rails 应用程序中,并且已经定义了 Users 表。设计生成器推出了以下迁移:

class AddDeviseToUsers < ActiveRecord::Migration
  def self.up
    change_table(:users) do |t|

     ## Database authenticatable
     t.string :email,              :null => false, :default => ""
     t.string :encrypted_password, :null => false, :default => ""

     ## Recoverable
     t.string   :reset_password_token
     t.datetime :reset_password_sent_at

     ## Rememberable
     t.datetime :remember_created_at

     ## Trackable
     t.integer  :sign_in_count, :default => 0

     blah blah blah....

   end

   add_index :users, :email,                :unique => true
   add_index :users, :reset_password_token, :unique => true
 end

不会生成向下迁移,并且我在删除这些索引时遇到了很大的麻烦。我在文档中看到了不同的建议符号,在网上看到了不同的建议,但它们似乎都不适合我。例如...

def self.down
  change_table(:users) do |t|
    t.remove  :email
    t.remove  :encrypted_password

    t.remove  :reset_password_token

    blah blah blah...
  end

  remove_index :users, :email
  remove_index :users, :reset_password_token
end

结果是...

An error has occurred, this and all later migrations canceled:

Index name 'index_users_on_email' on table 'users' does not exist

这很奇怪,因为如果我检查数据库,果然,“index_users_on_email”就在那里......

我尝试过其他变体,包括

remove_index :users, :column => :email

remove_index :users, 'email'

or:

change_table(:users) do |t|
  t.remove_index :email
end

...但没有骰子。我正在运行 Rails 3.1.0、Ruby 1.9.2、rake 0.9.2.2 和 Postgres。

让我失望的命令是:

bundle exec rake db:rollback STEP=1

成功应用迁移后。有什么建议吗?


根据记录,按名称删除索引的方法是

remove_index(:table_name, :name => 'index_name')

所以在你的情况下

remove_index(:users, :name => 'index_users_on_email')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 3.1.0 迁移中remove_index 的正确语法是什么? 的相关文章

随机推荐

  • AMPL:对 cplex 使用“timelimit”选项后的结果是否满足所有约束?

    我有一个虚拟问题 我需要知道它的答案 我正在开发一个需要 AMPL 和 CPLEX 作为求解器的项目 现在这个问题一般需要140秒以上才能解决 当我搜索时 我进入了一个名为timelimit 我有价值地使用了这个选项option cplex
  • 类型错误:无法将 datetime.timedelta 与 float 进行比较

    我正在编写 python 脚本来计算开始日期和结束日期之间的持续时间格式 例如20140520160000 and 20140520170000这样我就能得到时间 我在使用这段代码时遇到了问题 if epgDuration gt 0 10
  • 如何正确使用php fopen()

    我正在学习 php 尝试使用fopen 功能 我正在编码的php文件位于这个目录中 domains xxxxx com au public html phpfile php我为要打开的文件指定什么路径 我正在查看的示例基于电脑上的服务器 其
  • 如何在 C 中对单个数字的所有位进行异或?

    有没有一种简单的方法将单个数字的所有位异或在一起 即 C 中的一元异或 具有以下效果的东西 result 0x45 0 1 0 0 0 1 0 1 1 result 0x33 0 0 1 1 0 0 1 1 0 GCC 为此内置了一个 in
  • 大量在线对话文本的情感分析

    标题说明了一切 我有一个 SQL 数据库 其中充满了在线对话文本 我已经用 Python 完成了这个项目的大部分内容 所以我想使用 Python 的 NLTK 库来完成此操作 除非有一个strong不这样做的理由 数据的组织方式为Threa
  • 何时使用 cudaHostRegister() 和 cudaHostAlloc()? “固定或页面锁定”内存是什么意思? OpenCL 中哪些是等效的?

    我刚刚接触 Nvidia 的 API 有些表达对我来说不太清楚 我想知道是否有人可以帮助我了解何时以及如何以简单的方式使用这些 CUDA 命令 更准确地说 在研究如何通过内核并行执行 例如使用 CUDA 来加速某些应用程序时 在某些时候我面
  • 如何在不使用 NSTimer 的情况下在 iPhone 上循环游戏

    为了将我的游戏干净地移植到 iPhone 我正在尝试制作一个不使用 NSTimer 的游戏循环 我在一些示例代码中注意到 如果使用 NSTimer 您需要在开始时使用类似的内容进行设置 self animationTimer NSTimer
  • 匹配核心数据存储中的近似字符串

    我当前正在编写的核心数据应用程序有一个小问题 我有两种不同的模型 上下文和持久存储 一个用于我的应用程序数据 另一个用于包含与我相关的信息的网站 大多数时候 我将应用程序中的一条记录与其他来源的另一条记录完全匹配 然而 有时 我必须回退到模
  • 异常:底层连接已关闭:无法建立 SSL/TLS 安全通道的信任关系

    对于 firebase 通知代码 WebRequest tRequest WebRequest Create https fcm googleapis com fcm send tRequest Method post tRequest C
  • 使用 Dragula 在应用程序中进行 WebDriver 拖放

    我的公司有一个包含拖放功能的新应用程序 拖放是通过 Dragula 库完成的 我正在尝试自动化此功能 但我没有任何运气 我已经尝试过 WebDriver 的内置 DragAndDrop 方法 我的理解是它通常不能很好地与现代网络技术配合使用
  • 将 Parse.com 1.11.0 添加到 watchOS 2

    在 Parse SDK 更新到 1 11 0 中 它表示支持 watchOS 和 tvOS 我想知道如何使用 Cocoapods 将框架添加到我的 watchOS 应用程序中 pod 文件包含pod Parse 我已经跑了pod updat
  • Flexbox 和 vh 高度单位在 IE11 中不兼容吗?

    我正在尝试使用基于 Flexbox 的布局来为我的页面获取粘性页脚 这在 Chrome 和 Firefox 中效果很好 但在 IE11 中 页脚位于我的主要内容之后 换句话说 主要内容不会被拉伸以填充所有可用空间 body border r
  • 在免费/开源软件中使用 OAuth

    我现在正在阅读一些关于OAuth的介绍材料 有想法在免费软件中使用它 我读到了这个 消费者的秘密永远不能被泄露 向任何人透露 不要包含它 在任何请求中 在任何代码中显示它 样本 包括开源 或 任何方式揭示它 如果我使用 OAuth 为特定网
  • 如何在图形中找到三角形?

    这是一个练习算法设计手册 http www algorist com 考虑判断给定的无向图 G 是否为 V E 包含长度为 3 的三角形或环 a 给出一个 O V 3 来查找三角形 如果存在 b 改善 您的算法运行时间为 O V E 你可以
  • 如何通过分组和过滤将行分散到列?

    我有一个类似这样的数据集 df 1 lt tribble id type min price max price 1 X 10 40 1 Y 20 50 2 X 18 40 2 Y 34 50 2 NA 15 70 3 X 40 90 3
  • Scala 中具有重载方法的方法和函数之间的 Eta 扩展

    我想了解为什么 eta 扩展 6 26 5 不适用于重载方法 例如 如果我有以下两种方法 def d1 a Int b Int def r A B delegate A B Unit 我可以做这个 r d1 但是 当超载时r它将不再起作用
  • 带有 Java URLConnection 类的代理

    我对 Java 很陌生 我使用以下代码来调用 REST API 它在简单的环境中工作正常 但是当我与代理环境一起使用时 它会抛出空指针异常 我在谷歌上发现我们必须为此设置代理设置 我按照那个设置代理http www javaworld co
  • 如何从 JavaScript 中的去抖函数返回值? [复制]

    这个问题在这里已经有答案了 我有这样的代码 var originalFunction function return some value var debouncedFunction debounce originalFunction 30
  • Python 未打开 .py 文件 [已关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试在计算机上打开 py 脚本 但不幸的是它一直在记事本中打开 我尝试过更改计算机上的关联 但即使当我浏览到 python exe 并单击它时
  • Rails 3.1.0 迁移中remove_index 的正确语法是什么?

    我正在将 Devise 添加到现有的 Rails 应用程序中 并且已经定义了 Users 表 设计生成器推出了以下迁移 class AddDeviseToUsers lt ActiveRecord Migration def self up