2016-09-20 9 views
1

によってデプロイのライブアプリケーションを更新していない(それアプリのURLがより説明し、ユーザーフレンドリーになるように。新しくインストールされたRubyの宝石Friendly_Idは、私がFriendly_id宝石を使用することが私のアプリに2つのモデルを持っている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 

と発行モデル:

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にプッシュ。私はアプリを作り、それをHerokuに配備し、Friendly_IDの宝石を見つけました。それを発見した後、私はGemfileに上記の宝石をインストールし、前述のモデルとコントローラを微調整し、私のローカルサーバー上で美しく動作します。

私はすべて設定されていると思った。私はHerokuに自分のデータを再播種し、それをプッシュしましたが、変更はライブサイトには表示されません。そして、その代わりに、そのように各モデルのslugフィールドを使用する:

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

私はまだ参照してください。

www.mysite.com/politicians/7(バラク・オバマ大統領の政治家のID番号)
www.mysite.com/issues/3( "経済" の問題のためのID番号)

その他のバックストーリー:

StackOverflowでthe gem's docsとさらにa few questions hereを見て、既存のアプリケーションに宝石を追加すると、このコードを、友人の宝石が適用される各モデルのHerokuコンソールで実行するTo:その後、

heroku run console 

そして:動作しませんでした

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

: - /私のアプリはまだセマンティックフレンドリーなURLで更新されません。また、私は最初に宝石のヘルパーモジュールを使用したことを付け加えておきます。

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

を誰かon this StackOverflow threadは「ヘルパー」キーワードを削除するために述べたように、それはHerokuの上で更新するからそれを防止することができるので、:それで、私が持っていた(その後、保存した後、それを再度追加します?)。私はそれをまだ試していませんが(保存した後に "ヘルパー"キーワードを追加しなおしましたが、何かを試してもう一日無駄にする前に質問をしていました。

+0

heroku dbを移行して「スラグ」列を追加しましたか?あなたのローカル:プロダクション環境とローカル:開発環境のすべてで働いていますか? – eeeeeean

+0

はい、ノートパソコンのサーバー上でアプリをローカルに実行すると、すべてが完璧に機能しています。 「ローカル:プロダクション環境」と「ローカル:開発」との違いは何ですか? –

+0

そして、私は私のheroku dbを次のコマンドで移行します:heroku run rake db:migrate –

答えて

0

politician.rb

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

に追加し、それはバラク・オバマ/政治家/ politicians_controllerに/政治家/ 7からリダイレクトします。RB

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のアプリに更新するにはそれを得た:

は、ローカルDBバージョンを知って実行します。

$すくいデシベル:バージョン

次に、あなたがローカルに取得するバージョンを取ると、あなたは次の操作を行って、Herokuの中でそれを持っていることを確認してください。

$のHerokuの実行すくい--traceデシベル:移行VERSION = 20151127134901

これは、「ローカルに持っているのと同じバージョンの移行」を使用してHerokuにデータベースを移行させます。

関連する問題