2015-02-18 2 views
0

Прямо сейчас, если я создать URL для модели показа действий я просто называю:Пользовательских url_for для не холмистых идентификаторов

link_to model_instance 

, который создает что-то вроде этого, когда модель пользователя и идентификатор 1:

/user/1 

Мне нравится настраивать это поведение без необходимости проходить через все экземпляры в кодовой базе, где создается URL-адрес для такой модели. Мотивация изменения заключается в том, чтобы избежать перескакивания идентификатора в URL-адресе, который позволяет любому пользователю обнаруживать другие записи, просто увеличивая идентификатор. Так что-то вроде

/user/88x11bc1200 

Есть ли место, где я могу просто переопределить способ создания URL-адреса для выбранных моделей? Я использую RoR 4.x

ответ

1

Есть, по существу, два места, которые вам нужно будет обновить.

В модели

class User < ActiveRecord::Base 
    # Override the to_param method 
    def to_param 
    # Whatever your field is called 
    non_rolling_id 
    end 
end 

В контроллере

class UsersController < ApplicationController 
    def show 
    # Can't use `find` anymore, but will still come over as `id` 
    @user = User.find_by_non_rolling_id(params[:id]) 
    end 
end 
Смежные вопросы