Using more precise method signatures for AR::Relation#first_or_create family of methods.

This commit is contained in:
Andrés Mejía
2011-09-06 02:45:54 -05:00
parent d03aff7f64
commit 72317883ed

View File

@@ -118,22 +118,22 @@ module ActiveRecord
# user.last_name = "O'Hara"
# end
# # => <User id: 2, first_name: 'Scarlett', last_name: 'Johansson'>
def first_or_create(*args, &block)
first || create(*args, &block)
def first_or_create(attributes = nil, options = {}, &block)
first || create(attributes, options, &block)
end
# Like <tt>first_or_create</tt> but calls <tt>create!</tt> so an exception is raised if the created record is invalid.
#
# Expects arguments in the same format as <tt>Base.create!</tt>.
def first_or_create!(*args, &block)
first || create!(*args, &block)
def first_or_create!(attributes = nil, options = {}, &block)
first || create!(attributes, options, &block)
end
# Like <tt>first_or_create</tt> but calls <tt>new</tt> instead of <tt>create</tt>.
#
# Expects arguments in the same format as <tt>Base.new</tt>.
def first_or_new(*args, &block)
first || new(*args, &block)
def first_or_new(attributes = nil, options = {}, &block)
first || new(attributes, options, &block)
end
alias :first_or_build :first_or_new