Ruby on rails 3.1 Rails实例变量输出SQL代码而不是长度

Ruby on rails 3.1 Rails实例变量输出SQL代码而不是长度,ruby-on-rails-3.1,Ruby On Rails 3.1,我这里有一个奇怪的例子,它只发生在开发模式下。此行(在控制器中): 产生以下错误: NoMethodError:nil:NilClass的未定义方法fields]:选择搜索。*,将(searchTerm)计算为时间搜索自searches`WHERE(results=0和searchDate>DATE_SUB(CURDATE(),INTERVAL 7 DAY))按搜索词分组按时间顺序搜索描述,搜索日期描述 该SQL是被调用然后分配给该实例变量的查询。这在生产模式下不会发生,过去也不会发生 我想这一

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

产生以下错误:

NoMethodError:nil:NilClass的未定义方法
fields]:选择搜索。*,将(searchTerm)计算为时间搜索自
searches`WHERE(results=0和searchDate>DATE_SUB(CURDATE(),INTERVAL 7 DAY))按搜索词分组按时间顺序搜索描述,搜索日期描述

该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 )

您在开发中配置的数据库是否可能没有搜索所需的表/字段(因此尝试将.length设置为NULL)。它可以是一个很小的字段,它的allow null标志已更改

还更改了开发数据库的任何权限(更改密码、允许的主机等)

否则,创建生产数据库的转储,使用该转储创建临时数据库,并将开发配置指向该数据库,然后查看是否出现相同的错误

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

如果您在这里有更多的信息,我们将看看是否可以提供帮助:)


Dave

我通过安装RVM并升级到Ruby 1.9.3修复了错误。OSX附带的1.8.7版本中肯定有什么东西会导致这些问题,因为我开始为其他查询获取这些问题

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


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

谢谢。生产和开发数据库是同一个数据库。生产文件和开发文件是完全不同的,它们必须是正确的吗?尽管我看不到任何可能导致dev文件出现问题的选项。还有其他想法吗?默认配置通常有几行不同的代码。不同程度取决于项目的复杂性。我还注意到您将config.whiny_nils设置为true。默认情况下,生产将此设置为false,开发将其设置为true。基本上,当方法作用于nil对象时,这将导致错误。您可以尝试@searches.length,除非@searches.nil?我确实尝试过将whiny_nils设置为off,并且出现了相同的错误,这是有意义的,因为它在抱怨未定义的方法。除非@searches.nil?我得到了同样的错误:(你能发布填充@searches的代码吗?我刚刚注意到“来自searches”你能发现额外的撇号吗,这会导致MySQL错误。这不是撇号,这是一个实际平衡的反勾号,只是这个页面的呈现没有包含它。反勾号实际上是由Rails解释器添加的,因为我有这个
select(“searches.*,COUNT(searchTerm)AS timesearched”)。其中(“results=0,searchDate>DATE_SUB(CURDATE(),INTERVAL 7 DAY)”)。组(“searchTerm”)。重新排序(“timesSearched DESC,searchDate DESC”)
  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 )