Rails меняют URL по умолчанию - PullRequest
       3

Rails меняют URL по умолчанию

2 голосов
/ 16 сентября 2011

Я использую рельсы для приложения и создаю базу данных пользователей.У меня есть страница show.html.erb для каждого пользователя, но в настоящее время URL являются / users / 1 или / users / 2, я хочу, чтобы URL был случайным числом или отметкой времени создания.Так что-то вроде / users / 201109123121 или даже просто случайное; y сгенерированное число.

Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Да, определите to_param в вашей User модели:

def to_param
  timestamp
end

И определите атрибут timestamp в вашей модели и установите его в before_create:

class User < ActiveRecord::Base
  before_create :set_timestamp

  # model code goes here
  def set_timestamp
    self.timestamp = created_at.to_i
  end

Но если два пользователя были созданы в одну и ту же секунду, у вас возникнут проблемы.Вы можете сделать это немного более случайным, чем это.Теперь вам также нужно будет найти их на основе этого поля:

  User.find_by_timestamp(params[:id])
0 голосов
/ 16 сентября 2011

Добавьте это в свой Gemfile

gem 'uuidtools'

Тогда сделай

#models/user.rb
class User < ActiveRecord::Base
    before_create :set_uuid

    # model code goes here
    def set_uuid
        self.uuid = UUIDTools::UUID.timestamp_create.to_s
    end
end

Тогда вы запрашиваете это так.

User.find_by_uuid(params[:id])

В отличие от приведенного выше ответа, это должно значительно снизить вероятность состояния гонки, поскольку это точка uuid (универсальный уникальный идентификатор)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...