【问题标题】:Ransack no implicit conversion of Ransack::Search into ArrayRansack 没有将 Ransack::Search 隐式转换为 Array
【发布时间】:2014-03-12 18:41:20
【问题描述】:

我目前正在实施 Ransack 以实现搜索功能。

我有一个模型Campaigns,只要用户属于同一供应商,它就可以协作用户直接创建的活动以及其他活动。

我可以这样组合结果:

@search = current_user.campaigns + current_user.vendor.campaigns.where.not(:user_id => current_user.id)

问题是 Ransack 不会接受这个组合并吐出

no implicit conversion of Ransack::Search into Array

有人可以指出如何重构这段代码的方向吗?

TIA

添加附加数据

查看我的控制台时,我可以看到 *current_user.campaigns*:

Campaign Load (0.3ms)  
SELECT DISTINCT "campaigns".* FROM "campaigns" 
WHERE "campaigns"."user_id" = ?  [["user_id", 2]]

运行 *current_user.vendor.campaigns* 给我:

Campaign Load (0.4ms)  
SELECT DISTINCT "campaigns".* FROM "campaigns" 
INNER JOIN "weeks" ON "campaigns"."id" = "weeks"."campaign_id" 
INNER JOIN "products" ON "weeks"."product_id" = "products"."id" 
INNER JOIN "locations" ON "products"."location_id" = "locations"."id" 
WHERE "locations"."vendor_id" = ?  [["vendor_id", 2]]

我可以通过以下方式获得 current_user 的第一个过滤器:

@search = Campaign.where("campaigns.user_id" => current_user.id).search(params[:q])

但我不知道如何构建其余的连接表以包含数据的两个元素

【问题讨论】:

    标签: sql search ruby-on-rails-4 ransack


    【解决方案1】:

    已解决

     @search = Campaign.includes(:weeks).where('(campaigns.user_id LIKE ?) OR (weeks.vendor_id LIKE ?)', current_user.id, current_user.vendor.id).search(params[:q])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-16
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2014-06-25
      • 1970-01-01
      相关资源
      最近更新 更多