我在我的控制器中接到了这个电话:
@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
当我将创建的SQL
查询粘贴到MySQL
浏览器中时,会有结果。
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 :(得分:0)
您似乎需要使用:joins
代替:include
。
:include
的{{1}}选项(以及all
和find
等)告诉rails 单独执行查询以加载所有必要的给定相关记录的数据。
where
选项获取rails以执行一个SQL查询,该查询将JOIN作为关联模型,以便您可以查询其字段。
如果您想同时查询字段并将它们预加载到关联中,您需要同时执行这两项操作:
:join