エラー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:config
またはテスト環境で実行すると、次のように生成されますts: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
status
およびpublished_at
属性が欠落していることに注意してください。これは過去数か月間機能していましたが、何が原因で壊れたのかわかりません.
- スフィンクス 2.0.2-ベータ版
- 考えるスフィンクス 2.0.12
- レール 3.2.6
- ルビー1.9.3