【发布时间】:2013-09-19 01:19:08
【问题描述】:
我创建了一个迁移以将 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,如果这很重要的话。
【问题讨论】:
标签: ruby-on-rails ruby indexing routes migration