Urlname 列を Users テーブルに追加する移行を作成しました。次に、移行にインデックスを追加しました。移行の結果は次のとおりです。
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 を生成することも、ロールバックすることもできません。3 つすべてで同じ「無効なルート名: '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 を追加する」よりもずっと前のことなので、無関係であると確信しています。
何が間違っているかについての洞察はありますか?それが重要な場合、私はレール3.1.0、ルビー1.9.2、およびsqlite3を使用しています。