Module: ActiveRecord::MassAssignmentSecurity::Relation
- Included in:
- Base
- Defined in:
- lib/active_record/mass_assignment_security/relation.rb
Instance Method Summary collapse
-
#first_or_create(attributes = nil, options = {}, &block) ⇒ Object
Tries to load the first record; if it fails, then
create
is called with the same arguments as this method. -
#first_or_create!(attributes = nil, options = {}, &block) ⇒ Object
Like
first_or_create
but callscreate!
so an exception is raised if the created record is invalid. -
#first_or_initialize(attributes = nil, &block) ⇒ Object
Like
first_or_create
but callsnew
instead ofcreate
.
Instance Method Details
#first_or_create(attributes = nil, options = {}, &block) ⇒ Object
Tries to load the first record; if it fails, then create
is called with the same arguments as this method.
Expects arguments in the same format as Base.create
.
Examples
# Find the first user named Penélope or create a new one.
User.where(:first_name => 'Penélope').first_or_create
# => <User id: 1, first_name: 'Penélope', last_name: nil>
# Find the first user named Penélope or create a new one.
# We already have one so the existing record will be returned.
User.where(:first_name => 'Penélope').first_or_create
# => <User id: 1, first_name: 'Penélope', last_name: nil>
# Find the first user named Scarlett or create a new one with a particular last name.
User.where(:first_name => 'Scarlett').first_or_create(:last_name => 'Johansson')
# => <User id: 2, first_name: 'Scarlett', last_name: 'Johansson'>
# Find the first user named Scarlett or create a new one with a different last name.
# We already have one so the existing record will be returned.
User.where(:first_name => 'Scarlett').first_or_create do |user|
user.last_name = "O'Hara"
end
# => <User id: 2, first_name: 'Scarlett', last_name: 'Johansson'>
28 29 30 |
# File 'lib/active_record/mass_assignment_security/relation.rb', line 28 def first_or_create(attributes = nil, = {}, &block) first || create(attributes, , &block) end |
#first_or_create!(attributes = nil, options = {}, &block) ⇒ Object
Like first_or_create
but calls create!
so an exception is raised if the created record is invalid.
Expects arguments in the same format as Base.create!
.
35 36 37 |
# File 'lib/active_record/mass_assignment_security/relation.rb', line 35 def first_or_create!(attributes = nil, = {}, &block) first || create!(attributes, , &block) end |
#first_or_initialize(attributes = nil, &block) ⇒ Object
Like first_or_create
but calls new
instead of create
.
Expects arguments in the same format as Base.new
.
42 43 44 |
# File 'lib/active_record/mass_assignment_security/relation.rb', line 42 def first_or_initialize(attributes = nil, &block) first || new(attributes, , &block) end |