# File lib/dm-core/model.rb, line 273 def first_or_create(query, attributes = {}) first(query) || begin resource = allocate query = query.dup properties(repository_name).key.each do |property| if value = query.delete(property.name) resource.send("#{property.name}=", value) end end resource.attributes = query.merge(attributes) resource.save resource end end