instance method merge

Ruby on Rails 4.2.9

Since v3.0.20

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 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

merge(other)

Merges in the conditions from other, if other is an ActiveRecord::Relation. Returns an array representing the intersection of the resulting records with other, if other is an array.

Post.where(published: true).joins(:comments).merge( Comment.where(spam: false) )
# Performs a single join query with both where conditions.

recent_posts = Post.order('created_at DESC').first(5)
Post.where(published: true).merge(recent_posts)
# Returns the intersection of all published posts with the 5 most recently created posts.
# (This is just an example. You'd probably want to do this with a single query!)

Procs will be evaluated by merge:

Post.where(published: true).merge(-> { joins(:comments) })
# => Post.where(published: true).joins(:comments)

This is mainly intended for sharing common conditions between multiple associations.

Parameters

other req
Source
# File activerecord/lib/active_record/relation/spawn_methods.rb, line 30
    def merge(other)
      if other.is_a?(Array)
        to_a & other
      elsif other
        spawn.merge!(other)
      else
        self
      end
    end

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

Defined in ActiveRecord::SpawnMethods

Type at least 2 characters to search.

↑↓ navigate · open · esc close