Module: WellFormed::Persistence

Included in:
SimpleResource, SimpleStruct
Defined in:
lib/well_formed/persistence.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
8
9
10
# File 'lib/well_formed/persistence.rb', line 5

def self.included(base)
  base.include(ActiveSupport::Callbacks)
  base.include(AttributeAssignment)
  base.define_callbacks(:save)
  base.extend(ClassMethods)
end

Instance Method Details

#saveObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/well_formed/persistence.rb', line 30

def save
  return false unless valid?

  result = nil
  catch(:abort) do
    assign_attributes_to(resource)
    run_callbacks(:save) do
      result = perform
      throw(:abort) unless result
    end
  end
  errors.add(:base, :could_not_be_saved, message: "could not be saved") if result == false && errors.empty?
  result || false
end

#save!Object



45
46
47
# File 'lib/well_formed/persistence.rb', line 45

def save!
  save || raise(WellFormed::RecordInvalid.new(self))
end

#submitObject



49
50
51
# File 'lib/well_formed/persistence.rb', line 49

def submit
  save && resource
end