2012-04-15 13 views
0

私の問題は遠隔地のみです。Rails Spreeのデバッグ。データベース関連の可能性があります

私の問題は、ステートコントローラでがデータベースに存在しないことです。

ただし、リモートの場合、rails cの場合、国が機能します。国家と国家との関係が機能する。逆もまた同様で、両者は両方とも多くの情報を持っています。

戦場(SFW):

class Admin::StatesController < Admin::ResourceController 
    #belongs_to :country 
    # ^^ This default line with spree will break the app because once this controller is touched, Country is nil in this part of the app. 
    before_filter :load_data, :except => [:index] 

    def index 
    #@country = Country.first 
    #@country ||= Country.find_by_iso("US") 
    #^Does not work because no countries are in the database from the app. Even though countries are accessible in rails console. 

    @trip = "yes" 
    @users = User.all 
    @countries = Country.all 
    # ^^ Country as a class exists but it is not populated in this part of the app. 

私は私の見解でこれを投げるのであれば、このコントローラーのコードで、私が見ることができます:

  1. @tripの値。これはコントローラがデータを送信できることを意味します。
  2. @usersの値。つまり、データベースが動作しています。私はすべてのユーザーとその電子メールをリストすることができます
  3. リストされている国はありませんそれらのどれも現れません。しかし、再び、コンソールにcを入れて試してみるとうまくいきます。米国には51の州があります。そして彼らは皆完全な愛国的な婚姻で自国に電話します。

誰でもここで起こっていることから頭や尻を作ることができますか?

+1

私はフォークで自分自身を刺すことは、デバッグスプーリーよりも痛い(そして、傷跡がより長く続いている)ことを示唆し、あなたのタイトルは事実上正しくありません。あなたはそれがコントローラのすべてであると確信していますか? Spreeのバージョンはこれですか? –

+0

ケースインポイント。タイトルが更新されました。 – Trip

+0

旅行、あなたの更新がこれらのコメントをフォークしていることに気付かないでください。 –

答えて

2

私はあなたが開発モードでのコンソールとリリースでアプリmode.Try私は「

rails c production 

を実行していることを推測すると思いますあなたの国は生産データベースには存在しません。

+0

はい!あなたは素晴らしいジェフ・パケットをありがとう! – Trip

2

私はこの答えを「部分的でありそうもない」よりも優れていると分類しました。質問を明確にするためにビューコードを投稿することを検討してください。いずれにしても、このデバッグのアドバイスがあなたの答えになるかもしれません。

2つの異なるRails環境に関連する動作が表示されますか。両方の場合にRails.envを表示して、config/database.ymlファイルを見てください。このファイルでは、プロジェクトの各Rails環境ごとに異なるデータベースが表示されることがあります。異なる環境には、「テスト」、「生産」、「開発」などの名前が付いています。 'countries'(および他の関連テーブル)が、 'rails c'およびアプリケーションによって使用されている環境のデータベースに設定されていることを確認した場合、類似しているべきである。Rails.env here

もっと

+0

はい!親愛なる馬鹿よろこんでありがとう! – Trip

関連する問題