我得到了错误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-β
思维狮身人面像2.0.12
钢轨3.2.6
红宝石1.9.3

最佳答案

我在使用宙斯时也有类似的问题rake规范可以工作,但是当我使用宙斯时,我得到了类似的消息,你明白了吗对我来说,移除宙斯是有帮助的,但这只是一个部分的解决方案。。。

关于ruby - 思维 sphinx :“在测试环境中找不到分类属性`published_at`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11463310/

10-09 14:32