Rails: friendly_id использует name, а не slug в качестве идентификатора

#ruby-on-rails #internationalization #friendly-id

#ruby-on-rails #интернационализация #friendly-id

Вопрос:

Использование: Rails 3.0.3 Friendly_id: 4.0.0.beta11

Я создал полностью рабочую версию приложения для разработки, в которой у меня все работает, включая URL-адреса friendly_id: s, подобные domain.com/cars/mitsubishi

Сейчас я развертываю приложение на Heroku, но по какой-то причине я не могу заставить friendly_id работать.

Проблема: когда я развертываю его на Heroku, он выдает мне «name» как friendly_id, а не slug_en или slug_se. Calculation.first.friendly_id выдает, например, «я — вычисление» в отличие от «я — вычисление», которое было бы содержимым slug_en .

Модель (вычисление)

   extend FriendlyId
  friendly_id :name, :use => :slugged, :use => I18n
  

Миграция (вычисление):

         t.string :slug_en
        t.string :slug_se
  

Миграция2:

 add_index :calculations, :slug_en, :unique => true
add_index :calculations, :slug_se, :unique => true 
  

Проблема в том, что мне нужно отправить (heroku db: push) мою локальную базу данных в Heroku (поскольку она заполнена данными), и поэтому я не уверен, насколько я могу доверять миграции. Насколько я понимаю, они перезаписываются db:push .

Теперь это не должно иметь большого значения, поскольку локально оно работает нормально. Если я использую I18n.locale = :se, это даст мне slug_se в качестве id и slug_en для :en .

Стоит упомянуть, что Heroku использует postgre, а я использую mysql локально, если это имеет значение.

Мои вопросы:

  1. В чем обычно может быть проблема, если я получаю атрибут name как friendly_id вместо slug_en или slug_se
  2. Что-то не так с кодом, который я представил здесь?
  3. Могут ли различия postgre / mysql вызвать это?
  4. Это вопрос индексов, которые не создаются при моей установке Heroku?

Спасибо!

Ответ №1:

Казалось, проблема заключается в том, что когда я загружаю файлы в Heroku. Heroku использует friendly_id 4.0.0.beta8, и он является первым в 4.0.0.beta11, где появляется slug_en / slug_se (если я правильно понимаю).

Итак, проблема все еще не исправлена, но изменена на проблему совершенно другого типа, которая на самом деле не связана с вопросом, заданным в этом билете.

К вашему СВЕДЕНИЮ: новая проблема заключается в том, «Почему версия friendly_id изменяется на более раннюю версию».