module Sequel::Plugins::UpdateOrCreate::ClassMethods

  1. lib/sequel/plugins/update_or_create.rb


Public Instance

  1. find_or_new
  2. update_or_create

Public Instance methods

find_or_new(attrs, set_attrs=nil)

Operates the same as update_or_create, but returns the objects without persisting changes (no UPDATE/INSERT queries).

[show source]
   # File lib/sequel/plugins/update_or_create.rb
55 def find_or_new(attrs, set_attrs=nil)
56   obj = find(attrs) || new(attrs)
57   obj.set(set_attrs) if set_attrs
58   yield obj if defined?(yield)
59   obj
60 end
update_or_create(attrs, set_attrs=nil, &block)

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.

[show source]
   # File lib/sequel/plugins/update_or_create.rb
47 def update_or_create(attrs, set_attrs=nil, &block)
48   obj = find_or_new(attrs, set_attrs, &block)
49   obj.save_changes
50   obj
51 end