包含链式在哪里

时间:2013-11-08 18:52:12

标签: ruby-on-rails ruby

我有一个奇怪的问题。在调用包含之后,我想在我的控制器中链接一些where子句,但它只在没有链接的情况下才能工作。这是不起作用的代码(我想做的):

@events = Event.all.includes(:prices)
if params.has_key?("price_min") && params["price_min"].length > 0 then
    @events.where("prices.price >= ? AND prices.price IS NOT NULL", params["price_min"])
end

这有效(但我需要if语句):

@events = Event.all.includes(:prices).where("prices.price >= ? AND prices.price IS NOT NULL", params["price_min"])

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

all触发时,SELECT * from events将执行query = Event.includes(:prices) if params.has_key?("price_min") && params["price_min"].length > 0 then query = query.where("prices.price >= ? AND prices.price IS NOT NULL", params["price_min"]) end @events = query.all

您可以这样设置:

all

这将动态构建查询,然后在print完成后执行。

注意:在控制台中运行此功能将无法满足您的期望,因为REPL的{{1}}将导致每个点的查询执行。