Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 包括链接在何处_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 包括链接在何处

Ruby on rails 包括链接在何处,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个奇怪的问题。我想在调用includes之后在我的控制器中链接一些where子句,但它只有在未链接时才起作用。下面是不起作用的代码(我想做的): 这是可行的(但我需要if语句): 有什么想法吗?当触发时,all将执行SELECT*from events 您可以这样设置: query = Event.includes(:prices) if params.has_key?("price_min") && params["price_min"].length > 0 t

我有一个奇怪的问题。我想在调用includes之后在我的控制器中链接一些where子句,但它只有在未链接时才起作用。下面是不起作用的代码(我想做的):

这是可行的(但我需要if语句):


有什么想法吗?

当触发时,
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
执行


注意:在控制台中运行此操作不会给您带来预期效果,因为REPL的
打印
将导致在每个点执行查询。

哦,这很有意义!刚刚意识到我的其他参数有@events=@events.where(…)。看起来按照你描述的方式设计会更有效率。非常感谢。
@events = Event.all.includes(:prices).where("prices.price >= ? AND prices.price IS NOT NULL", params["price_min"])
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