2012-03-15 12 views
2

開発モードで空の結果:RailsのMySQLは:私は私のコントローラで、この電話を受けた

@tournaments = Tournament.unignored.all(
:include => [:matches,:sport,:category], 
:conditions=> ["matches.status in (0,4) 
       && matches.date < ?", 
       Time.now.end_of_week + 1.day], 
:order => "sports.sort ASC, categories.sort ASC, tournaments.sort ASC") 

すべてが本番モードで、開発コンソールのようにうまく動作します。私は開発モードでは、特定のページを閲覧しようとするが、私は得る:

nil.eachを評価しながら

エラーが発生しました、私は結果があるMySQLブラウザに作成したSQLクエリを貼り付けた場合。

It refers to mysql2 (0.2.11) lib/active_record/connection_adapters/mysql2_adapter.rb:587:in `select' 

クエリが正しく到着しました。

誰も同じような問題がありましたか?このエラーはどこからも出ませんでした。更新情報など...

ありがとうございます!

Rails 3.0.9 MySql 5.5 Ruby 1.8.7 and mysql2 0.2.11 gem 
+0

含まカテゴリには、それを台無しに。それがなぜサーバ上で動作するのかまだ分かりません。 – user1261284

答えて

0

あなたが:joins代わりの:includeを使用する必要があるように見えます。

all(およびfindwhereなど)への:includeオプションは、関連付けられた特定のレコードのすべてのncessaryのデータをロードするためにクエリを実行別途にレールを伝えます。

:joinオプションは、関連するモデルをJOINするSQLクエリを実行してフィールドを照会することができます。

あなたはフィールド上の両方のクエリにしたいと団体にそれらをプリロードする場合は、両方を実行する必要があります。

@tournaments = Tournament.unignored.all(
:include => [:matches,:sport,:category], 
:joins => [:matches,:sport,:category], 
:conditions=> ["matches.status in (0,4) 
       && matches.date < ?", 
       Time.now.end_of_week + 1.day], 
:order => "sports.sort ASC, categories.sort ASC, tournaments.sort ASC") 
関連する問題