ruby-on-rails - 使用acts_as_taggable_on 查询错误表名来测试Thinking Sphinx

标签 ruby-on-rails thinking-sphinx acts-as-taggable-on

首先,生产方面工作得很好,只有当我运行测试时才会出现错误。

如标题所述,我将 Thinking Sphinx 与acts_as_taggle gem 一起使用。以下是我正在使用的模型的一些片段:

class Special < ActiveRecord::Base
  acts_as_taggable
  acts_as_taggable_on :cuisines, :meals

  ...

  define_index do
    ...
    indexes cuisine_taggings.tag(:name), :as => :cuisine_tags, :facet => true
    indexes meal_taggings.tag(:name), :as => :meal_tags
    ...
  end

  ...

end

搜索看起来像这样:

Special.search("some query", {
  :conditions => {:meal_tags => "dinner"} ,
  :geo => coordinates,
  :retry_stale => true,
  :with => {
    "@geodist" => 0.0..distance,
    :timeframe => [1,2],
  },
  :page => page, 
  :per_page => Kaminari.config.default_per_page,
  :order => "#{day} desc, @relevance DESC, @geodist ASC"
}

我看到的错误是这样的:

Mysql2::Error: Unknown column 'cuisine_taggings_specials.context' in 'where clause': SELECT `taggings`.`id` AS t0_r0, `taggings`.`tag_id` AS t0_r1, `taggings`.`taggable_id` AS t0_r2, `taggings`.`taggable_type` AS t0_r3, `taggings`.`tagger_id` AS t0_r4, `taggings`.`tagger_type` AS t0_r5, `taggings`.`context` AS t0_r6, `taggings`.`created_at` AS t0_r7, `tags`.`id` AS t1_r0, `tags`.`name` AS t1_r1 FROM `taggings` LEFT OUTER JOIN `tags` ON `tags`.`id` = `taggings`.`tag_id` WHERE `taggings`.`taggable_id` = 1 AND `taggings`.`taggable_type` = 'Special' AND (`cuisine_taggings_specials`.context = 'cuisines')

如您所见,查询正在尝试查找“cuisine_taggings_specials”表,而不仅仅是标记表。

每当我更改索引时,我都会在开发和测试中重建索引。

就像我说的,生产和开发工作得很好,只是当我运行测试时。

最佳答案

我想知道这是否与测试环境生成配置时未填充多态数据有关。你如何进行测试? cucumber ,纯 capybara ,还是其他什么?

添加一些数据后,尝试重新生成配置,然后建立索引:

ThinkingSphinx::Test.stop  # if sphinx is already running?
ThinkingSphinx::Test.start # this generates config, indexes, and starts Sphinx.

当然,如果错误发生在您的设置之外,这没有帮助......因此第一个问题:)

关于ruby-on-rails - 使用acts_as_taggable_on 查询错误表名来测试Thinking Sphinx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9424573/

相关文章:

mysql - 使用迁移文件将 MySQL-DB-Dump 导入 Rails 应用程序

ruby-on-rails - 如何接受逗号分隔列表来为模型构建标签?

ruby-on-rails - Thinking sphinx - 带条件连接的索引 (has_and_belongs_to_many)

mysql - ThinkingSphinx::SphinxError 失去与 MySQL 服务器的连接 ( 'reading initial communication packet')

ruby-on-rails-3 - 使用属性和 act_as_taggable 进行简单搜索

ruby-on-rails - acts_as_taggable_on Gem 不适用于 Rails 5

ruby-on-rails - 进行大型事务时 Validates_uniqueness_of 不起作用

html - 使用 Ruby on Rails 编写的网页不会显示标题文本的更改

ruby-on-rails - 在 Controller 中使用实例变量

sphinx - 如何通过思考sphinx来调试索引数据