2

我收到错误sort-by attribute 'published_at' not found,但仅在测试环境中,即使在重建之后也是如此。

在模型中:

belongs_to :content, polymorphic: true
belongs_to :user

define_index do
  indexes user.name, as: :name
  has role
  has user_id
  has content_id
  has content.published_at, as: :published_at, type: :datetime
  has content.status, as: :status, type: :integer
end

rake ts:rebuild开发中运行正确构建索引:

# development.sphinx.conf
{
  [...]
  sql_attr_uint = sphinx_internal_id
  sql_attr_uint = sphinx_deleted
  sql_attr_uint = class_crc
  sql_attr_uint = role
  sql_attr_uint = user_id
  sql_attr_uint = content_id
  sql_attr_uint = status
  sql_attr_timestamp = published_at
  sql_attr_string = sphinx_internal_class
  [...]
}

但是,运行RAILS_ENV=test rake ts:configts:rebuild测试环境会生成以下内容

# test.sphinx.conf
{
  [...]
  sql_attr_uint = sphinx_internal_id
  sql_attr_uint = sphinx_deleted
  sql_attr_uint = class_crc
  sql_attr_uint = role
  sql_attr_uint = user_id
  sql_attr_uint = content_id
  sql_attr_string = sphinx_internal_class
  [...]
}

这当然会导致测试环境出错:

ThinkingSphinx::SphinxError:
  index content_byline_core: sort-by attribute 'published_at' not found

注意缺失statuspublished_at属性。这在过去的几个月里一直有效,但我不知道是什么导致它崩溃。

  • 狮身人面像 2.0.2-beta
  • 思考狮身人面像 2.0.12
  • 导轨 3.2.6
  • 红宝石 1.9.3
4

1 回答 1

0

我在使用 Zeus 时遇到了类似的问题。rake 规范有效,但是当我使用 zeus 时,我收到了类似的消息,你知道吗?对我来说,删除 zeus 有帮助,但这只是部分解决方案......

于 2014-02-21T09:43:57.760 回答