Ruby on rails 3 太阳黑子-命名错误(未定义的方法`result=&x27;用于nil:NilClass)

Ruby on rails 3 太阳黑子-命名错误(未定义的方法`result=&x27;用于nil:NilClass),ruby-on-rails-3,full-text-search,search-engine,sunspot,sunspot-solr,Ruby On Rails 3,Full Text Search,Search Engine,Sunspot,Sunspot Solr,我有一个关于使用太阳黑子的问题。我有一个应用程序,它使用这个gem执行一些搜索。共有5个型号具有此功能,其中只有1个显示错误 @search.results NoMethodError (undefined method `result=' for nil:NilClass): app/controllers/financial_dashboards_controller.rb:27:in `index' 这是我的密码: 控制器 @search = Sunspot.search(Pur

我有一个关于使用太阳黑子的问题。我有一个应用程序,它使用这个gem执行一些搜索。共有5个型号具有此功能,其中只有1个显示错误

 @search.results

NoMethodError (undefined method `result=' for nil:NilClass):
  app/controllers/financial_dashboards_controller.rb:27:in `index'
这是我的密码:

控制器

@search = Sunspot.search(Purchase) do
   fulltext params[:search]
   with(:product_owner).equal_to(current_user.id)
   facet(:status)
   if params[:status].present?
      with(:status).equal_to(params[:status]) 
   end
   facet(:sell_date)
   if params[:sell_date].present?
      with(:sell_date).equal_to(params[:sell_date])
   end
   order_by(:sell_date, :desc)
end

#line 27
@sales = @search.results.paginate(:page => params[:page], :per_page => 5)
型号(购买):

另一件奇怪的事情是,在我的开发机器上,这段代码工作得非常完美。在使用nginx的生产机器上,代码显示此错误

我检查了gems的版本,它们是匹配的。我试过了

rake sunspot:solr:reindex RAILS_ENV=production
重新编制索引。我试过了

rake sunspot:solr:stop RAILS_ENV=production
rake sunspot:solr:start RAILS_ENV=production
重新启动搜索服务器。甚至尝试删除solr/folder并让开始脚本再次复制它

为什么其他模型工作得很好?有什么办法解决这个问题吗


谢谢

在我的例子中,关键字段(id)不是唯一的

之所以发生这种情况,是因为我设计了一个id字段不明显的mysql视图

这就是为什么在下一个非唯一行指数化过程中,太阳黑子总是第一次“落”到零

所以

在太阳黑子宝石代码中的某个地方引发了一个错误



当我找到答案时(我花了几个小时在上面),我只是将我的id字段设置为唯一,重新索引了我的模型,问题就解决了。

你能找到你问题的答案吗?@search.hits包含什么?是的,这也是我出现此错误的原因,非唯一id字段。我想投票支持我的帖子!)我今天也犯了同样的错误,去了SO,找到了答案,只有我试着投票,我发现我写了它!))
rake sunspot:solr:stop RAILS_ENV=production
rake sunspot:solr:start RAILS_ENV=production
hit.result = result