class Roqua::CoreApi::Models::ActiveVirtus

Public Class Methods

new(params = nil) click to toggle source
Calls superclass method
# File lib/roqua/core_api/models/active_virtus.rb, line 11
def initialize(params = nil)
  super
  dates_from_xi(params)
end

Public Instance Methods

assign_attributes(params = {}) click to toggle source
# File lib/roqua/core_api/models/active_virtus.rb, line 21
def assign_attributes(params = {})
  self.attributes = params
end
attributes=(params) click to toggle source
Calls superclass method
# File lib/roqua/core_api/models/active_virtus.rb, line 16
def attributes=(params)
  dates_from_xi(params)
  super
end

Private Instance Methods

date_from_xi(attribute, params) click to toggle source
# File lib/roqua/core_api/models/active_virtus.rb, line 38
def date_from_xi(attribute, params)
  self[attribute] = {
    year:  params.fetch("#{attribute}(1i)"),
    month: params.fetch("#{attribute}(2i)", 1),
    day:   params.fetch("#{attribute}(3i)", 1),
    hour:  params.fetch("#{attribute}(4i)", 0),
    min:   params.fetch("#{attribute}(5i)", 0),
    sec:   params.fetch("#{attribute}(6i)", 0)
  }
rescue StandardError
  errors.add(attribute, I18n.t("errors.messages.invalid_date"))
end
dates_from_xi(params) click to toggle source

set Date and DateTime attributes by “name(1i)” style params

# File lib/roqua/core_api/models/active_virtus.rb, line 28
def dates_from_xi(params)
  return unless params
  dates_to_change = self.class.attribute_set.select do |a|
    a.type.primitive <= Date && params["#{a.name}(1i)"].present?
  end
  dates_to_change.each do |a|
    date_from_xi(a.name, params)
  end
end