db_populate/lib/create_or_update.rb
2008-09-15 20:08:50 -05:00

18 lines
551 B
Ruby

class ActiveRecord::Base
# given a hash of attributes including the ID, look up the record by ID.
# If it does not exist, it is created with the rest of the options.
# If it exists, it is updated with the given options.
#
# Raises an exception if the record is invalid to ensure seed data is loaded correctly.
#
# Returns the record.
def self.create_or_update(options = {})
id = options.delete(:id)
record = find_by_id(id) || new
record.id = id
record.attributes = options
record.save!
record
end
end