Измените длину постоянной ссылки на объект, чтобы иметь размер предварительно определенной длины - PullRequest
0 голосов
/ 28 декабря 2011

Допустим, у меня есть модель под названием «Автомобиль», и я могу получить доступ к своему действию автосалона в /cars/:id. Первая запись будет жить в /cars/1, но я этого не хочу. Я хочу, чтобы постоянная ссылка имела длину 8 цифр, независимо от того, какой у машины идентификатор. Так, например, первая постоянная ссылка будет 00000001, а не 1.

Я не знаю, как это реализовать, что делать в модели (возможно, to_param метод) или что делать в маршрутах.

Пожалуйста, помогите мне, если сможете, я ценю любой намек.

1 Ответ

1 голос
/ 28 декабря 2011

Вы пытались использовать friendly_id драгоценный камень. Если вы можете использовать его, и я настоятельно рекомендую вам использовать его. Из комментариев в коде:

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

Вот пример класса, который использует собственный метод для генерации пули:

class Person < ActiveRecord::Base
  friendly_id :name_and_location
  def name_and_location
    "#{name} from #{location}"
  end
end

bob = Person.create! :name => "Bob Smith", :location => "New York City"
bob.friendly_id #=> "bob-smith-from-new-york-city"

Итак, я думаю, вы можете сделать:

class Car < AR::Base
  friendly_id :id_of_length_eight
  def id_of_length_eight
    # logic here to add leading zeroes
  end
end
...