sql - 使用 Date.today 加入命名范围的一部分

标签 sql ruby-on-rails arel

出于某种原因,当我在 where 中使用时,Date 类被识别

scope :with_active_subthing, joins("left outer join thing_subthing on thing_subthing.patient_id = thing.id").where("thing_subthing.start_date <= ? AND ( thing_subthing.end_date > ? OR thing_subthing.end_date IS NULL ) ", Date.today, Date.today)

但是当我在连接中使用它时无法识别它

scope :with_active_subthing, joins("left outer join thing_subthing on thing_subthing.patient_id = thing.id AND (thing_subthing.start_date <= ? AND ( thing_subthing.end_date > ? OR thing_subthing.end_date IS NULL )) ", Date.today, Date.today)

我得到:

RuntimeError: unknown class: Date

最佳答案

如果您查看 underlying code that builds the join portion ,你可以看到它正在寻找特定的对象类型,而 Date 不是其中之一。该错误有点令人困惑,但它的意思是 Date 不能用作 joins 的参数。从您的问题中并不清楚为什么要这样做,但是您绝对应该像在第一个示例中那样同时使用连接和位置。

这是导致问题的代码,因为它落入了“raise”行:

def build_joins(manager, joins)
  buckets = joins.group_by do |join|
    case join
    when String
      'string_join'
    when Hash, Symbol, Array
      'association_join'
    when ActiveRecord::Associations::JoinDependency::JoinAssociation
      'stashed_join'
    when Arel::Nodes::Join
      'join_node'
    else
      raise 'unknown class: %s' % join.class.name
    end
  end

关于sql - 使用 Date.today 加入命名范围的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13781512/

相关文章:

sql - 使用 AbstractCube.sql() 在扩展多维数据集中未定义的安全上下文。多维数据集

sql - 检查Where中的count函数

ruby-on-rails - Rails Arel 选择不同的列

ruby - 为什么要使用 SQL 构建器? Arel 诉 Sequel 诉 T-SQL

ruby - 类型错误:无法访问 Arel::Nodes::Union

mysql - 当我尝试在数据库中查找和替换 javascript 时,为什么会收到 SQL 错误

mysql - SQL查询以计算联系人所属类别的数量

ruby-on-rails - 具有不同仪表板的多个设计用户

带有 Rails 的 MySQL 通过本地安装驱动我

ruby-on-rails - 如何在 Rails 3 中订购包含的元素