module Sequel::Plugins::UpdateOrCreate::ClassMethods
Public Instance Methods
find_or_new(attrs, set_attrs=nil) { |obj| ... }
click to toggle source
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 55 def find_or_new(attrs, set_attrs=nil) obj = find(attrs) || new(attrs) obj.set(set_attrs) if set_attrs yield obj if block_given? obj end
update_or_create(attrs, set_attrs=nil, &block)
click to toggle source
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 47 def update_or_create(attrs, set_attrs=nil, &block) obj = find_or_new(attrs, set_attrs, &block) obj.save_changes obj end