Rails实例变量吐出SQL代码而不是长度

时间:2012-01-10 11:09:19

标签: ruby-on-rails-3.1

我在这里有一个奇怪的,它只发生在开发模式下。这一行(在控制器中):

@searches.length

产生此错误:

  

NoMethodError:未定义的方法fields' for nil:NilClass: SELECT searches.*, COUNT(searchTerm) AS timesSearched FROM搜索`WHERE(结果= 0 AND searchDate> DATE_SUB(CURDATE(),INTERVAL 7 DAY))GROUP BY searchTerm ORDER BY timesSearched DESC,searchDate DESC

该SQL是被调用然后分配给此实例变量的查询。这在生产模式中不会发生,并且不会发生。

我认为它必须与我的开发环境有关,但却无法想到它可能是什么。

非常感谢任何帮助。

Ruby 1.8.7和Rails 3.1.1

编辑发布开发环境文件内容

  config.cache_classes = false
  config.whiny_nils = true
  config.encoding = "utf-8"
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = false
  config.active_support.deprecation = :log
  config.action_dispatch.best_standards_support = :builtin
  config.assets.compress = false
  config.assets.debug = false
  config.assets.precompile += %w( *.css )

2 个答案:

答案 0 :(得分:0)

您在开发中配置的数据库是否可能没有搜索所需的表/字段(因此尝试将.length设置为NULL)。它可以是像允许空标志更改的字段一样小的东西。

还要在开发数据库上更改任何权限(更改密码,允许的主机等)?

否则创建生产数据库的转储,使用它来创建临时数据库并将开发配置指向该数据库,看看是否收到相同的错误。

还要比较您的生产和开发配置文件。

如果您在此处有更多信息发布,我们会看看是否可以提供帮助:)

戴夫

答案 1 :(得分:0)

我能够通过安装RVM并升级到Ruby 1.9.3来修复错误。 OS X附带的1.8.7版本中必定存在导致这些问题的内容,因为我开始将其用于其他查询。

早些时候我使用1.9.2但不得不降级,因为我的托管网站仍然使用1.8.7。

我感谢你的帮助,他们是非常好的主意,非常感谢。