0

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を使用しています。

4

2 に答える 2