Rails MySql:开发模式下的空结果

时间:2012-03-15 14:36:32

标签: mysql ruby-on-rails ruby

我在我的控制器中接到了这个电话:

@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

1 个答案:

答案 0 :(得分:0)

您似乎需要使用:joins代替:include

:include的{​​{1}}选项(以及allfind等)告诉rails 单独执行查询以加载所有必要的给定相关记录的数据。

where选项获取rails以执行一个SQL查询,该查询将JOIN作为关联模型,以便您可以查询其字段。

如果您想同时查询字段并将它们预加载到关联中,您需要同时执行这两项操作:

:join