instance method where_values_hash

Ruby on Rails 4.2.9

Since v3.0.20 Last seen in v6.1.7.10

Available in: v3.0.20 v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10

Signature

where_values_hash(relation_table_name = table_name)

Returns a hash of where conditions.

User.where(name: 'Oscar').where_values_hash
# => {name: "Oscar"}

Parameters

relation_table_name opt = table_name
Source
# File activerecord/lib/active_record/relation.rb, line 559
    def where_values_hash(relation_table_name = table_name)
      equalities = where_values.grep(Arel::Nodes::Equality).find_all { |node|
        node.left.relation.name == relation_table_name
      }

      binds = Hash[bind_values.find_all(&:first).map { |column, v| [column.name, v] }]

      Hash[equalities.map { |where|
        name = where.left.name
        [name, binds.fetch(name.to_s) {
          case where.right
          when Array then where.right.map(&:val)
          when Arel::Nodes::Casted
            where.right.val
          end
        }]
      }]
    end

Defined in activerecord/lib/active_record/relation.rb line 559 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Relation

Type at least 2 characters to search.

Use the arrow keys to navigate results, Enter to open one, Escape to close.

Keyboard shortcuts

/
Focus search
⌘K / Ctrl-K
Command palette
?
This help
Esc
Close