gpt4 book ai didi

ruby-on-rails - Rails ActiveRecord : building queries dynamically

转载 作者:行者123 更新时间:2023-12-03 10:49:22 26 4
gpt4 key购买 nike

我正在尝试将一系列可以使用 ActiveRecord 动态创建和执行复杂查询的类放在一起。我对整个做法感到很舒服:

MyModel.select("id, name, floober").join(:creator).where(:is_active => true)

我正在努力使用这些东西来建立一个查询,而无需能够提前确定每种可能的方法(连接数、数量或 where 子句、限制、组等)的数量.我可能有 2 个连接,或者没有连接,这取决于它从哪里调用。

由于我获取这些内容的方式的性质——连接列表、列列表、where 子句列表等——我可以盲目地将它们链接在一起。我必须将列连接在一起,排列连接,链接 where 子句,所以我无法遍历各种列表。

我试图避免编写任何原始 SQL。

我尝试过的一件事是将 ruby​​ 语句构建为一个字符串,然后在最后对其进行评估,当我完成时,我觉得很脏,就像我需要洗澡一样。我正在寻找的是一种缓存查询状态的方法,直到所有部分都已累积,然后执行它们。

我是否“脱轨”了?

提前致谢...

最佳答案

我想我想通了。根据我对 AR 查询方法的理解,我相当不理解。事实证明,在您实际尝试使用结果之前,ActiveRecord 不会实际执行查询。因此,可以执行以下操作:

model_query = MyModel.select("column12, column32")
model_query = model_query.joins(:user)
model_query = model_query.where(:column12 => true)

然后在一切都建立起来之后你就可以做
model_query.each do |record|
...
end

在您调用每个(或您使用的任何需要查询结果的方法)之前,查询实际上不会执行。

我是通过观看 Railscasts 得到的 202215 .我爱瑞恩·贝茨。

关于ruby-on-rails - Rails ActiveRecord : building queries dynamically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6084743/

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