Method: ActiveRecord::Relation#create_or_find_by!
- Defined in:
- activerecord/lib/active_record/relation.rb
#create_or_find_by!(attributes, &block) ⇒ Object
Like #create_or_find_by, but calls create! so an exception is raised if the created record is invalid.
281 282 283 284 285 286 287 288 289 290 291 |
# File 'activerecord/lib/active_record/relation.rb', line 281 def create_or_find_by!(attributes, &block) with_connection do |connection| transaction(requires_new: true) { create!(attributes, &block) } rescue ActiveRecord::RecordNotUnique if connection.transaction_open? where(attributes).lock.find_by!(attributes) else find_by!(attributes) end end end |