Module | Sequel::Plugins::UpdateOrCreate::ClassMethods |
In: |
lib/sequel/plugins/update_or_create.rb
|
Operates the same as update_or_create, but returns the objects without persisting changes (no UPDATE/INSERT queries).
# File lib/sequel/plugins/update_or_create.rb, line 53 53: def find_or_new(attrs, set_attrs=nil) 54: obj = find(attrs) || new(attrs) 55: obj.set(set_attrs) if set_attrs 56: yield obj if block_given? 57: obj 58: end
Attempt to find an record with the attrs, which should be a hash with column symbol keys. If such an record exists, update it with the values given in set_attrs. If no such record exists, create a new record with the columns specified by both attrs and set_attrs, with the ones in set_attrs taking priority. If a block is given, the object is yielded to the block before the object is saved. Returns the new or updated object.
# File lib/sequel/plugins/update_or_create.rb, line 45 45: def update_or_create(attrs, set_attrs=nil, &block) 46: obj = find_or_new(attrs, set_attrs, &block) 47: obj.save_changes 48: obj 49: end