I\'m looking for a clean way to create a record with a set of attributes if the record does not exist and - if the record do exist - to update its attributes. I love the syn
You can write your own method:
class ActiveRecord::Base
def self.find_by_id_or_create(id, &block)
obj = self.find_by_id( id ) || self.new
yield obj
obj.save
end
end
usage
Category.find_by_id_or_create(10) do |c|
c.name = "My new name"
end
Of course, in this way you should extend method missing
method and implement this method in the same way as others find_by_something
methods. But for being short this will be enough.