gpt4 book ai didi

ruby-on-rails - NoMethodError 未定义方法 `fields' 为 nil :NilClass

转载 作者:行者123 更新时间:2023-12-04 05:44:21 24 4
gpt4 key购买 nike

使用:Rails 3.1.1

我正在尝试在我的应用程序中创建一个搜索引擎,用于浏览大型数据库(大约 100 000 个项目)以进行字符串匹配。

我正在使用以下内容:

fp = FeededProduct.where("name LIKE '%blue%'  OR description LIKE '%blue%'  OR category LIKE '%blue%'")

对于“blue”的搜索查询。

当我在 MySQL 中运行等效的搜索短语时,它工作正常,但是当我尝试在 rails 中运行它时,它显示:
NoMethodError: undefined method `fields' for nil:NilClass: SELECT `feeded_products`.* FROM `feeded_products`  WHERE (name LIKE '%blue%'  OR description LIKE '%blue%'  OR category LIKE '%blue%')

线索和故障排除:

这只发生在大型搜索结果中,我无法区分一个数字,但它在应该返回 920 个结果时崩溃,但在返回 6 个结果时它不会崩溃!

我对上述结论的结论要么是它无法将所有 920 个结果保留在内存中,要么是某种类型的行使其崩溃,结果越多,它就越有可能包含该类型的行。我更倾向于第一个结论。

我无法很好地对其进行故障排除,因为它在我尝试运行时崩溃(具有相同的错误代码):
raise fp.inspect

它也会崩溃:
fp.each do |prod| 
begin
puts 'Do nothing'
rescue
puts 'Something crashed'
end

但它不会崩溃:
raise fp.count.inspect 

那么,我有内存类型的问题吗?我该怎么做才能进一步解决这个问题和/或解决问题?

使用:Mac OS X 10.7.2。狮子
数据库:InnoDB
适配器:Mysql2(不知道是哪个版本)

堆:
ActiveRecord::StatementInvalid (NoMethodError: undefined method fields' for nil:NilClass: SELECT feeded_products`.* FROM feeded_products WHERE (name LIKE '%blue%' OR description LIKE '%blue%' OR category LIKE '%blue%')): app/controllers/search_results_controller.rb:190:in `show'

编辑 2012-03-06 附加故障排除:
  • 我试过

    fp2 = FeededProduct.limit(60000)

  • 创建一个非常大的点击数组,并且效果很好。所以我想这排除了我的猜测,即 fp 变量不能容纳一定数量的项目。

    问题的核心似乎是,如果我使用:
    fp = FeededProduct.where("name LIKE '%blue%'  OR description LIKE '%blue%'  OR category LIKE '%blue%'")

    在应用程序不崩溃的情况下,我之后无法将 fp 变量用于任何事情。

    最佳答案

    您能否在 search_results_controller.rb 中发布第 190 行的代码,以及任何其他可能在您的 show 方法中引用“字段”属性的代码?还有来自 app/models/feeded_product.rb 的模型 FeededProduct 的相关部分

    app/controllers/search_results_controller.rb:190:in `show'

    不清楚您发布的信息中引用了哪些字段。这可能是打字错误、错误代码或需要运行的迁移。

    还要注意的是
    fp.each.do |prod|

    在语法上不正确。它应该是:
    fp.each do |prod|

    关于ruby-on-rails - NoMethodError 未定义方法 `fields' 为 nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9501588/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com