我创建了一个迁移以将 Urlname 列添加到用户表。然后我为迁移添加了一个索引。这是由此产生的迁移:
class AddUrlnameToUsers < ActiveRecord::Migration
def change
add_column :users, :urlname, :string
add_index :users, :urlname, :unique => true
end
end
然后我使用了 rake db:migrate。
schema.rb 包含“urlname”列并表示它具有唯一索引。但是,我网站上的某些页面有错误:无效的路由名称:'users/:urlname_index'。
好吧,无论如何我都不想称它为“urlname”。我想称之为“永久链接”。但现在我无法生成 FixColumnName 迁移、RemoveUrlNameFromUsers,也无法回滚 - 所有三个都出现相同的“无效路由名称:'users/:urlname_index'”错误。
所以我add_index :users, :urlname, :unique => true
从迁移文件中删除了,即使我已经迁移了它。那没有帮助。
我的 routes.rb 包含
Crowdpublishtv::Application.routes.draw do
devise_for :users
resources :users
#resources 'users/:urlname', :to => 'User#booklist'
#match 'users/:urlname_index', :to => 'users#show'
devise_for :users
authenticated :user do
root :to => "users#booklist"
end
get "attachments/show"
resources :users do
resources :books
end
devise_for :users
resources :users do
member do
get 'booklist', 'blog', 'profileinfo', 'readerprofileinfo', 'orgprofileinfo'
end
end
end
我尝试注释掉并取消注释用# 标记的行。没有帮助。
这是相关的 db:migrate 状态:
Status Migration ID Migration Name
--------------------------------------------------
up 20130319002105 Create users
up 20130328235904 ********** NO FILE **********
up 20130703205730 Add devise to users
up 20130911002912 Add bookfiles to users
up 20130917143106 Add urlname to users
* NO FILE *是我认为我已经回滚的东西......但由于早在“向用户添加 urlname”之前,我很确定它是无关紧要的。
关于什么是不正确的任何见解?我在 rails 3.1.0,ruby 1.9.2,使用 sqlite3,如果这很重要的话。