- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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/
我在看 : 有关列出哪些方法可用的引用文档? 关于如何设置和执行查询,然后构建复杂查询的教程? 检查自述文件,这里被标记为 Arel 的问题,但大多数是关于如何设置 where 子句,复杂的查询而不是
一个模型有两个感兴趣的属性,名字和城镇。我想搜索 Richard(伦敦)和 Brian(马德里)。 从长远来看, p=Person.scoped pred1=p.table[:forename].eq
让我们有一个 Rails 4.2.x 应用程序,我们有两个表 posts 和 authors,我们想使用 Arel 来获取由 name == 'Karl' 的作者创作的帖子。 (在这种情况下,我们可以
我正在尝试重构一段代码(并提高我对 Arel::Nodes::Case 的理解),我想转换此 Arel.sql 语句 Arel.sql(default_order) def defau
我正在使用 Arels 创建查询。在此查询中,我使用了 generate_series 函数。这是我的代码: def generate_series Arel::Nodes::Na
我有这个用例,我从某个模型中获得符号化的深层关联,并且我必须执行某些涉及使用外连接的查询。如何在不求助于手动编写完整 SQL 的情况下做到这一点? 我不想要的答案: - 使用包含(不能很好地解决深层关
我正在尝试使用 ARel 清理用 MySQL case 语句编写的 ActiveRecord 代码。我知道 Arel 能够处理 case 语句,但不确定如何使用它。 所以我有一个带有数量和 user_
我需要一个消息列表,其中每条消息都是当前用户与其他用户之间“对话”中的最新消息。 描述了相同的查询 in this question 我目前的代码是: t1 = Arel::Table.new(:me
我正在尝试使用 Arel#extract 方法。我在源代码中的 test_extract.rb 中的测试用例中看到了一个示例,但是当我尝试在我的应用程序中重现它时,我得到了未定义的方法。 table
我在使用 Arel 聚契约(Contract)一查询中的 2 列时遇到了问题。当我运行它时,在 rails dev-server 崩溃之前,整个服务器会卡住一分钟。我怀疑是无限循环:)。 也许我误解了
我有以下 Arel SQL: Arel.sql("(users.last_donated_at IS NOT NULL AND users.last_donated_at < '#{User::ACT
假设我有几张 table orders = Arel::Table.new :orders stores = Arel::Table.new :stores managers = Arel::Tabl
我有以下内容: class BaseReseller :merchant_owner, :dependent => :destroy end class IPSP true end class M
如果您使用 joins在 ARel 范围内,结果变为只读(即您无法更新您返回的任何记录)。如果您不希望结果是只读的,您只需链接 readonly(false)到范围,例如 User.joins(:or
我有一个 fairly complex sql query我很确定我无法使用 ARel (Rails 3.0.10) 来完成 查看该链接,但它有一些连接和一个 where isn't 子句,我很确定这
我正在尽最大努力让我的大脑围绕阿雷尔及其背后的关系代数进行思考,但如何表示SELECT DISTINCT始终让我无法理解。谁能解释一下如何设置: SELECT DISTINCT title FROM
我正在尝试抽象出有人插入我们代码库的原始 sql 主体,我们使用的是 Rails 4.2.8。我想要生成以 where 子句结尾的 sql,如下所示: WHERE col1=1 OR col2=1 O
我试图寻找一个使用 Arel::UpdateManager 来形成带有 from 子句的更新语句的示例(如 UPDATE t SET t.itty = "b"FROM .. .. WHERE ...)
我想向 Arel 添加额外的列选择结果,其中列中的值在每一行上都相同,以便我可以向 Rails ActiveRecord 对象添加有关查询上下文的额外信息。 那么,我如何使用 Arel 生成此 SQL
我正在使用 RAILS 4 和 MySQL服务通过服务场所有很多场所。 我正在尝试创建一个与以下 SQL 查询等效的 AREL: SELECT DISTINCT services . * FR
我是一名优秀的程序员,十分优秀!