thinking sphinx 如何检查关联文件是否为 NULL?
How check that associated file is not NULL in thinking sphinx?
我有一个 Product
模型 has_many :images
图像模型有一个照片字段(我使用载波gem存储文件):
class Image < ApplicationRecord
mount_uploader :photo, DressingUploader
end
这是我的 product_index.rb
文件:
ThinkingSphinx::Index.define :product, with: :active_record do
indexes name
has images.pose, as: :image_pose
join images
end
如何将 images.photo
属性添加到 thinking sphinx 以检查照片是否存在?
我可以添加这一行 where "images.photo IS NOT NULL"
,但我不需要全局工作的条件。
我尝试做类似
的事情
has "images.photo IS NOT NULL", as: :has_photo, type: :boolean
但是没用
由于您要处理给定产品的许多图片,因此您需要汇总每张图片的照片值。可能是 SUM(CASE) 语句将完成这项工作(这个 应该 在 MySQL 和 PostgreSQL 中工作):
has "SUM(CASE WHEN images.photo IS NULL THEN 0 ELSE 1 END) > 0",
as: :has_photo, type: :boolean
此解决方案适用于 SQL 支持的索引(您正在使用的索引)。对于任何遇到使用实时索引的人来说,解决方案是不同的......你需要一个方法来引用你的 class:
def has_image_photos
images.any? { |image| image.photo.present? }
end
然后在索引中:
has has_image_photos, as: :has_photo, type: :boolean
我有一个 Product
模型 has_many :images
图像模型有一个照片字段(我使用载波gem存储文件):
class Image < ApplicationRecord
mount_uploader :photo, DressingUploader
end
这是我的 product_index.rb
文件:
ThinkingSphinx::Index.define :product, with: :active_record do
indexes name
has images.pose, as: :image_pose
join images
end
如何将 images.photo
属性添加到 thinking sphinx 以检查照片是否存在?
我可以添加这一行 where "images.photo IS NOT NULL"
,但我不需要全局工作的条件。
我尝试做类似
的事情has "images.photo IS NOT NULL", as: :has_photo, type: :boolean
但是没用
由于您要处理给定产品的许多图片,因此您需要汇总每张图片的照片值。可能是 SUM(CASE) 语句将完成这项工作(这个 应该 在 MySQL 和 PostgreSQL 中工作):
has "SUM(CASE WHEN images.photo IS NULL THEN 0 ELSE 1 END) > 0",
as: :has_photo, type: :boolean
此解决方案适用于 SQL 支持的索引(您正在使用的索引)。对于任何遇到使用实时索引的人来说,解决方案是不同的......你需要一个方法来引用你的 class:
def has_image_photos
images.any? { |image| image.photo.present? }
end
然后在索引中:
has has_image_photos, as: :has_photo, type: :boolean