2016-09-20 9 views
1

У меня есть две моделей в моем приложении, которые используют камень Friendly_id (это так, что URL-адрес для приложения является более описательным и удобно.Недавно установлен рубин Gem Friendly_Id не обновляется on-приложения, которое развернутый Via Heroku

Политик Модель:

class Politician < ActiveRecord::Base 
    has_many :interests 
    has_many :issues, through: :interests 

    validates :name, :political_party, :title, :slug, presence: true 

    extend FriendlyId 
    friendly_id :name, use: :slugged 
end 

и модель Issue:

class Issue < ActiveRecord::Base 
    has_many :interests 
    has_many :politicians, through: :interests 

    validates :name, :slug, :keywords, presence: true 

    extend FriendlyId 
    friendly_id :name, use: :slugged 
end 

Предыстория: приложение не было изначально подтолкнули к Хереку с установленным камнем. Я построил приложение и развернул его в Heroku, а затем я столкнулся с жемчужиной Friendly_ID. Узнав об этом, я установил gem в свой Gemfile, изменил вышеупомянутые модели и контроллеры, и он прекрасно работает на моем локальном сервере.

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

www.mysite.com/politicians/barack-obama
www.mysite.com/issues/economy

Я все еще вижу:

www.mysite.com/politicians/7 (политик ID номер Барака Обамы)
www.mysite.com/issues/3 (идентификационный номер для "эконом" вопрос)

Подробнее История Назад:

Я посмотрел the gem's docs и даже a few questions here на StackOverflow, и все они сказали, что если вы добавляете драгоценный камень в ранее существовавшее приложение, то для запуска этого кода в консоли Heroku для каждой модели, используемой при использовании джойстика friendly_id чтобы:

heroku run console 

И потом:

Politician.find_each(&:save) 
Issue.find_each(&:save) 

Это не работает: -/Мое приложение еще не обновляется с семантико-дружественных URL. Я также должен добавить, что изначально я использовал вспомогательный модуль gem. И так, у меня было:

friendly_id :name, use: [:slugged, :history] 

Но кто-то on this StackOverflow thread упоминается удалить «помощник» ключевое слово (?, А затем повторно добавить его после сохранения), так как это может препятствовать его от обновления на Heroku. Я еще не пробовал (повторное добавление ключевого слова «помощник» после сохранения, но я хотел задать свой вопрос, прежде чем я потратил лишний день на что-то, и он не работает.

Помогите пожалуйста :-)

+0

Вы мигрировали свой герою db, чтобы добавить столбец «slug»? Все ли работает в вашей локальной: производственной среде, а также локально: разработка? – eeeeeean

+0

Да, все работает отлично, когда я запускаю приложение локально на сервере на своем ноутбуке. В чем разница между «локальной: производственной средой» и «локальным: развитие»? –

+0

И да я мигрирую свою герою db, запустив: heroku run rake db: migrate –

ответ

0

добавить его в politician.rb

def slug=(value) 
     if value.present? 
     write_attribute(:slug, value) 
     end 
    end 

и перенаправить из/политики/7/политики/барак-ОБАМА politicians_controller.Р.Б.

def set_slug_url 
    @item = (*you-model*).friendly.find(params[:id]) 
    redirect_to action: 'show', id: @item.friendly_id, status: 301 unless @item.friendly_id == params[:id] 
    end 
0

Я отвечаю на свой вопрос - я понял это с помощью этого Stackover flow thread.

Я получил его для обновления на моем живом приложении Heroku, убедившись, что моя версия локальной базы данных совпадала с версией базы данных на Heroku:

Чтобы знать локальную версию дб сделать:

$ рейки дб: версия

Затем возьмите версию вы получите на месте и убедитесь, что у вас в Heroku, выполнив следующие действия:

$ Heroku запустить грабли --trace дб: мигрировать VERSION = 20151127134901

Это приводит к миграции базы данных в Heroku с «той же версией миграции, которую вы локально».

 Смежные вопросы

  • Нет связанных вопросов^_^