【发布时间】: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