Module: Associates::Persistence

Extended by:
ActiveSupport::Concern
Defined in:
lib/associates/persistence.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#persisted?Boolean

Returns Wether or not all models are persited.

Returns:

  • (Boolean)

    Wether or not all models are persited



31
32
33
34
35
# File 'lib/associates/persistence.rb', line 31

def persisted?
  associates.all? do |associate|
    send(associate.name).send(:persisted?)
  end
end

#save(*args) ⇒ Boolean

Persists each associated model

Returns:

  • (Boolean)

    Wether or not all models are valid and persited



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/associates/persistence.rb', line 16

def save(*args)
  return false unless valid?

  ActiveRecord::Base.transaction do
    begin
      associates.all? do |associate|
        send(associate.name).send(:save!, *args)
      end
    rescue ActiveRecord::RecordInvalid
      false
    end
  end
end

#save!True, ActiveRecord::RecordInvalid

Returns:

  • (True, ActiveRecord::RecordInvalid)


38
39
40
# File 'lib/associates/persistence.rb', line 38

def save!
  save || raise(ActiveRecord::RecordInvalid)
end