gpt4 book ai didi

ruby-on-rails - Rails 3 或 arel 链/有条件地合并 SQL 条件

转载 作者:行者123 更新时间:2023-12-02 22:04:56 24 4
gpt4 key购买 nike

在 Rails 3 中有没有一种方法可以有条件地合并记录条件而不进行字符串或数组合并?

例如:

    conditions = #?    
if !params[:x].blank?
# add a condition
end
if user.role?(:admin)
# add a condition
end
if params[:y]
# add a condition
end
etc
result = Record.where(xx).group(:id).order(some_var)
# xx would merge all then group and order

最佳答案

简单:

# oh, the joy of lazy evaluation...
result = Record.where(true) # I'd like to do Record.all, but that fetches the records eagerly!
result = result.where("...") if params[:x].present?
result = result.where("...") if user.role?(:admin)
result = result.where("...") if params[:y].present?

顺便说一句,不要在 irb 中尝试这样做:“read-eval-print”的“print”部分将强制对记录集求值。

编辑: 我刚刚发现您可以使用 Record.scoped 而不是 Record.where(true)。不过,这在 Rails 4 中不起作用。

关于ruby-on-rails - Rails 3 或 arel 链/有条件地合并 SQL 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16294815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com