Eu estava configurando Stringex para meu modelo de usuário existente seguindo o Leiame (não há realmente nenhuma instrução de instalação) e achei que precisava adicionar a gema ao meu Gemfile:
# Gemfile
gem "stringex"
E configurar meus modelos e controladores:
# user.rb
acts_as_url :name, :sync_url => true
def to_param
url
end
# users_controller.rb
load_and_authorize_resource :find_by => :url
Estou usando o CanCan aqui.
Então me ocorreu, quando recebi erros de roteamento:
ActionController::RoutingError at /users
No route matches {:action=>"show", :controller=>"users", :id=>#<User id: 1, email: ...
Acontece que você precisa adicionar algumas colunas primeiro:
$ rails g migration AddUrlToUsers url:string:uniq
# 20130404102715_add_url_to_users.rb
class AddUrlToUsers < ActiveRecord::Migration
def up
add_column :users, :url, :string, :nil => false
add_index :users, :url, :unique => true
# You'll want to generate the URLs for all existing users:
User.initialize_urls
end
def down
remove_index :users, :url
remove_column :users, :url
end
end
Mas isso é óbvio, não é?
Acompanhamento: Redirecionando rotas de ID antigas para novos slugs