Module: Easy::ReferenceData

Defined in:
lib/easy/reference_data/railtie.rb,
lib/easy/reference_data/refresh.rb,
lib/easy/reference_data/version.rb

Defined Under Namespace

Classes: Railtie

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.refresh(clazz, unique_attribute_symbol, unique_attribute_value, attributes) ⇒ Object



5
6
7
# File 'lib/easy/reference_data/refresh.rb', line 5

def self.refresh(clazz, unique_attribute_symbol, unique_attribute_value, attributes)
  self.update_or_create(clazz, attributes.merge(unique_attribute_symbol => unique_attribute_value), keys: [unique_attribute_symbol])
end

.update_or_create(clazz, attributes, options) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/easy/reference_data/refresh.rb', line 9

def self.update_or_create(clazz, attributes, options)
  unique_attribute_keys = options.fetch(:keys)

  record = clazz.where(attributes.slice(*unique_attribute_keys)).first_or_initialize

  if record.new_record?
    $stderr.puts "..creating #{clazz}(#{attributes.slice(*unique_attribute_keys)})"
  else
    $stderr.puts "..updating #{clazz}(#{attributes.slice(*unique_attribute_keys)})"
  end

  begin
    record.update_attributes!(attributes)
  rescue
    $stderr.puts "Save failed for #{record.class} with attributes #{attributes.inspect}"
    raise
  end

  record
end