ruby-on-rails - 将一种属性与另一种属性与掠夺进行比较

标签 ruby-on-rails ruby-on-rails-4 ransack

Ransack 允许我使用属性、谓词和值构建条件。但是,我找不到任何关于如何将一个属性与另一个属性进行比较的文档。例如,我如何为以下内容创建条件:

WHERE column_a < column_b

最佳答案

我已经使用 Ransack 有一段时间了,但我看不到任何可能做你正在寻找的事情。您需要的是“case -> when”语句,它可以在Rails 中生成,也可以作为带有ActiveRecord 的SQL 生成。

Ransack 使您能够通过定义属性、谓词和值来创建自定义 SQL 命令,然后将其转换为您已经提到的 WHERE 语句。我看不出有任何可能直接告诉 Ransack 过滤你想要的东西。然而:

您可以创建一个范围,例如:

scope :column_b_gt_columnb_a, -> { where('column_b > column_a') }

然后你可以像这样构建你的搜索:
Object({ column_b_gt_columnb_a: true })

可能不是你真正想要的,但我认为这是你能得到的最好的......

如果你想用 Rails 来做,你可以比较值或使用我上面使用的 where 语句。
Records.each do |i|
case i.variable_a
  when i.variable_b
    # do something when it's the same
  when i.variable_a > i.variable_b
    # do something when it's greater
  end
end

有关 SQL 语句的示例,请查看此处

How do I compare two columns for equality in SQL Server?

希望这个对你有帮助!

关于ruby-on-rails - 将一种属性与另一种属性与掠夺进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24294137/

相关文章:

mysql - Rails 5 使用 Ransack,自定义范围顺序进行排序

ruby-on-rails - Postgres gem 未安装

javascript - 你能在javascript中创建一个check_box_tag吗

jquery - Rails 4 x Bootstrap 3 日期时间选择器 : design is not good

ruby-on-rails - Rails 4 WYSIWYG Bootsy 不显示格式

ruby-on-rails - Rails + Ransack-下拉列表集合?

ruby-on-rails - 在 Rails 中,对象是否应该仅限于具有 View 和 Controller 的对象?

javascript - 在 Rails 中使用 capybara-webkit 模拟按键

ruby-on-rails - 使用 ApplicationController.renderer.render 从 Controller 外部渲染的 Rails 5 不会在自身上设置变量

ruby-on-rails - Ransack搜索,如何通过分割输入搜索参数来搜索每个词