Module: Mongoid::Criteria::Modifiable

Included in:
Mongoid::Criteria
Defined in:
build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#create_attrsObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



10
11
12
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 10

def create_attrs
  @create_attrs
end

#create_attrs Additional attributes to add to the Document upon creation.(AdditionalattributestoaddtotheDocumentuponcreation.) ⇒ Object (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



10
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 10

attr_reader :create_attrs

Instance Method Details

#build(attrs = {}, &block) ⇒ Document Also known as: new

Build a document given the selector and return it. Complex criteria, such as $in and $or operations will get ignored.

Examples:

build the document.

Person.where(:title => "Sir").build

Build with selectors getting ignored.

Person.where(:age.gt => 5).build

Returns:

  • (Document)

    A non-persisted document.

Since:

  • 2.0.0



24
25
26
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 24

def build(attrs = {}, &block)
  create_document(:new, attrs, &block)
end

#create(attrs = {}, &block) ⇒ Document

Create a document in the database given the selector and return it. Complex criteria, such as $in and $or operations will get ignored.

Examples:

Create the document.

Person.where(:title => "Sir").create

Create with selectors getting ignored.

Person.where(:age.gt => 5).create

Returns:

  • (Document)

    A newly created document.

Since:

  • 2.0.0.rc.1



41
42
43
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 41

def create(attrs = {}, &block)
  create_document(:create, attrs, &block)
end

#create!(attrs = {}, &block) ⇒ Document

Create a document in the database given the selector and return it. Complex criteria, such as $in and $or operations will get ignored. If validation fails, an error will be raised.

Examples:

Create the document.

Person.where(:title => "Sir").create

Create with selectors getting ignored.

Person.where(:age.gt => 5).create

Returns:

  • (Document)

    A newly created document.

Raises:

Since:

  • 3.0.0



60
61
62
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 60

def create!(attrs = {}, &block)
  create_document(:create!, attrs, &block)
end

#create_with(attrs = {}) ⇒ Mongoid::Criteria

Define attributes with which new documents will be created.

Note that if ‘find_or_create_by` is called after this in a method chain, the attributes in the query will override those from this method.

Examples:

Define attributes to be used when a new document is created.

Person.create_with(job: 'Engineer').find_or_create_by(employer: 'MongoDB')

Returns:

Since:

  • 5.1.0



75
76
77
78
79
80
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 75

def create_with(attrs = {})
  tap do
    @create_attrs ||= {}
    @create_attrs.update(attrs)
  end
end

#find_or_create_by(attrs = {}, &block) ⇒ Document

Find the first Document given the conditions, or creates a new document with the conditions that were supplied.

Examples:

Find or create the document.

Person.find_or_create_by(:attribute => "value")

Parameters:

  • attrs (Hash) (defaults to: {})

    The attributes to check.

Returns:

  • (Document)

    A matching or newly created document.



91
92
93
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 91

def find_or_create_by(attrs = {}, &block)
  find_or(:create, attrs, &block)
end

#find_or_create_by!(attrs = {}, &block) ⇒ Document

Find the first Document given the conditions, or creates a new document with the conditions that were supplied. If validation fails an exception will be raised.

Examples:

Find or create the document.

Person.find_or_create_by!(:attribute => "value")

Parameters:

  • attrs (Hash) (defaults to: {})

    The attributes to check.

Returns:

  • (Document)

    A matching or newly created document.

Raises:



107
108
109
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 107

def find_or_create_by!(attrs = {}, &block)
  find_or(:create!, attrs, &block)
end

#find_or_initialize_by(attrs = {}, &block) ⇒ Document

Find the first Document given the conditions, or initializes a new document with the conditions that were supplied.

Examples:

Find or initialize the document.

Person.find_or_initialize_by(:attribute => "value")

Parameters:

  • attrs (Hash) (defaults to: {})

    The attributes to check.

Returns:

  • (Document)

    A matching or newly initialized document.



120
121
122
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 120

def find_or_initialize_by(attrs = {}, &block)
  find_or(:new, attrs, &block)
end

#first_or_create(attrs = nil, &block) ⇒ Document

Find the first Document, or creates a new document with the conditions that were supplied plus attributes.

Examples:

First or create the document.

Person.where(name: "Jon").first_or_create(attribute: "value")

Parameters:

  • attrs (Hash) (defaults to: nil)

    The additional attributes to add.

Returns:

  • (Document)

    A matching or newly created document.

Since:

  • 3.1.0



135
136
137
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 135

def first_or_create(attrs = nil, &block)
  first_or(:create, attrs, &block)
end

#first_or_create!(attrs = nil, &block) ⇒ Document

Find the first Document, or creates a new document with the conditions that were supplied plus attributes and will raise an error if validation fails.

Examples:

First or create the document.

Person.where(name: "Jon").first_or_create!(attribute: "value")

Parameters:

  • attrs (Hash) (defaults to: nil)

    The additional attributes to add.

Returns:

  • (Document)

    A matching or newly created document.

Since:

  • 3.1.0



151
152
153
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 151

def first_or_create!(attrs = nil, &block)
  first_or(:create!, attrs, &block)
end

#first_or_initialize(attrs = nil, &block) ⇒ Document

Find the first Document, or initializes a new document with the conditions that were supplied plus attributes.

Examples:

First or initialize the document.

Person.where(name: "Jon").first_or_initialize(attribute: "value")

Parameters:

  • attrs (Hash) (defaults to: nil)

    The additional attributes to add.

Returns:

  • (Document)

    A matching or newly initialized document.

Since:

  • 3.1.0



166
167
168
# File 'build/mongoid-7.3/lib/mongoid/criteria/modifiable.rb', line 166

def first_or_initialize(attrs = nil, &block)
  first_or(:new, attrs, &block)
end