【问题标题】:using searchlogic with habtm associations使用带有 habtm 关联的 searchlogic
【发布时间】:2010-06-21 20:59:14
【问题描述】:

我有以下问题:

我的 rails 应用中有两个类,由一个 HABTM 协会加入,如下所示:

#ad.rb
has_and_belongs_to_many :specs
#spec.rb
has_and_belongs_to_many :ads

由 ads_specs 表连接。 我正在尝试使用出色的 searchlogic gem 对 Ad 类进行搜索。一切都很好,直到我想要返回所有具有所有选定规格的广告,而不是任何一个。

我尝试了@ads = Ad.specs_id_like_all(id1, id2, id3),但没有结果,因为我认为它试图匹配具有“id1,id2,id3”的 id 的规范。我也尝试过 .split id 或直接在数组中键入它们,但没有任何效果。

我的确切搜索查询是:

if params[:search]
  @ads = Ad.search(:price_lte => params[:search][:price],
                   :rulaj_lte => params[:search][:rulaj],
                   :fabrication_date_gte => Date.new(params[:search][:"an_fabr(1i)"].to_i,"01".to_i,"01".to_i)).specs_id_like_all(2, 457, 233)

else
  @ads = Ad.all
end

你们知道我该如何解决这个问题吗?我发誓这是我最后一次在 Rails 应用程序中使用 HABTM 关联,​​但是在开发过程的后期更改为多态关联已经太晚了:)。

【问题讨论】:

    标签: ruby-on-rails has-and-belongs-to-many searchlogic


    【解决方案1】:

    如果我理解正确,您正在尝试执行 SQL IN() 查询(即spec_id IN (x,y,z..)

    Searchlogic 确实支持将数组传递给*_eq() 方法,该方法将使用 SQL 的 IN() 谓词:

    Ad.search(:spec_id_eq => [1,2,3,4])
    

    **不确定这是否适用于旧版本的 Searchlogic*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多