class Sprig::Reap::Record

Attributes

model[R]
record[R]
sprig_id[W]

Public Class Methods

new(record, model) click to toggle source
# File lib/sprig/reap/record.rb, line 8
def initialize(record, model)
  @record = record
  @model  = model
end

Public Instance Methods

attributes() click to toggle source
# File lib/sprig/reap/record.rb, line 13
def attributes
  @attributes ||= model.attributes.delete_if { |a| a == "id" } | model.associations.map(&:has_and_belongs_to_many_attr).compact
end
sprig_id() click to toggle source
# File lib/sprig/reap/record.rb, line 29
def sprig_id
  @sprig_id ||= model.existing_sprig_ids.include?(record.id) ? model.generate_sprig_id : record.id
end
to_hash() click to toggle source
# File lib/sprig/reap/record.rb, line 17
def to_hash
  attributes.reduce({"sprig_id" => sprig_id}) do |hash, attr|
    value = Value.for(self, attr)

    if Sprig::Reap.omit_empty_attrs && empty?(value)
      hash
    else
      hash.merge(attr => value)
    end
  end
end

Private Instance Methods

empty?(value) click to toggle source
# File lib/sprig/reap/record.rb, line 35
def empty?(value)
  value.respond_to?(:empty?) ? value.empty? : value.nil?
end