smudge/sojourn

View on GitHub
lib/sojourn/event.rb

Summary

Maintainability
A
0 mins
Test Coverage
require_relative 'serializers/indifferent_json'

module Sojourn
  class Event < ActiveRecord::Base
    DEFAULT_FIELDS = %i(id sojourner_uuid name properties user_id created_at)

    belongs_to :user

    serialize :properties, Serializers::IndifferentJSON

    before_save do
      properties.keys.map(&:to_sym).each do |key|
        send("#{key}=", properties[key]) if self.class.available_fields.include?(key)
      end
    end

    def self.available_fields
      @available_fields ||= column_names.map(&:to_sym) - DEFAULT_FIELDS
    end
  end
end