这与我关于 joins here的问题有些相关。默认情况下,当我在搜索结果视图中使用 listing.image.name 时,它会执行完整查询以查找结果数组中每个列表的图像。它甚至会做一个额外的查询来检查列表是否有任何图像。所以为避免这种情况,我将以下内容添加到我的 Thinking Sphinx 查询中:
@ts_params[:sql][:joins] = "INNER JOIN listing_images ON listing_images.listing_id = listings.id AND listing_images.position = 0"
@ts_params[:sql][:select] = "listings.*, listing_images.image as image_name, listing_images.id as image_id"
这可行,但是我不确定如何使用carrierwave 生成完整的image_url。以前,它对每个结果进行额外查询时,我使用的是listing.image.image_url(:sizename)。所以,我可以从上面的加入中找到图像名称和 ID,但是如何通过 carrierwave 将其转换为完整的图像 url?是否有不需要“图像”对象的内置方法来检索 url?
我尝试了 listing.image_id.image_url(:sizename) 但它给出了一个未定义的方法错误,正如预期的那样。