diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2012-03-12 15:02:18 +0000 |
---|---|---|
committer | Andrew White <andyw@pixeltrix.co.uk> | 2012-03-12 15:03:04 +0000 |
commit | a01f0ab83981f0ea15a1f683b84186961732f416 (patch) | |
tree | e9c980c0a4327e871e7b9eb9b65e3c9c5db5c361 | |
parent | 90d96353e6dcd962b182e03f53f2214acde00907 (diff) | |
download | rails-a01f0ab83981f0ea15a1f683b84186961732f416.tar.gz rails-a01f0ab83981f0ea15a1f683b84186961732f416.tar.bz2 rails-a01f0ab83981f0ea15a1f683b84186961732f416.zip |
Add documentation for find_or_create_by_{attribute}! method.
-rw-r--r-- | activerecord/lib/active_record/base.rb | 3 | ||||
-rw-r--r-- | railties/guides/source/active_record_querying.textile | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 9c4d4cb274..425cd8cbab 100644 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -208,6 +208,9 @@ module ActiveRecord #:nodoc: # # Now 'Bob' exist and is an 'admin' # User.find_or_create_by_name('Bob', :age => 40) { |u| u.admin = true } # + # Adding an exclamation point (!) on to the end of <tt>find_or_create_by_</tt> will + # raise an <tt>ActiveRecord::RecordInvalid</tt> error if the new record is invalid. + # # Use the <tt>find_or_initialize_by_</tt> finder if you want to return a new record without # saving it first. Protected attributes won't be set unless they are given in a block. # diff --git a/railties/guides/source/active_record_querying.textile b/railties/guides/source/active_record_querying.textile index d9d7d38db5..47392c1851 100644 --- a/railties/guides/source/active_record_querying.textile +++ b/railties/guides/source/active_record_querying.textile @@ -1109,6 +1109,8 @@ Client.where(:first_name => 'Andy').first_or_create!(:locked => false) # => ActiveRecord::RecordInvalid: Validation failed: Orders count can't be blank </ruby> +As with +first_or_create+ there is a +find_or_create_by!+ method but the +first_or_create!+ method is preferred for clarity. + h4. +first_or_initialize+ The +first_or_initialize+ method will work just like +first_or_create+ but it will not call +create+ but +new+. This means that a new model instance will be created in memory but won't be saved to the database. Continuing with the +first_or_create+ example, we now want the client named 'Nick': |