module Cased::Rails::Model
Public Instance Methods
cased_id()
click to toggle source
# File lib/cased/rails/model.rb, line 6 def cased_id primary_key_column = self.class.primary_key "#{self.class.name};#{send(primary_key_column)}" end
cased_payload()
click to toggle source
# File lib/cased/rails/model.rb, line 11 def cased_payload { cased_category => self, }.tap do |payload| cased_payload_belongs_to_associations(self, payload) end end
Private Instance Methods
cased_payload_belongs_to_associations(object, payload, prefix: nil)
click to toggle source
@param payload [Hash] The cased_payload
to mutate. @param object [ActiveRecord::Base] The ActiveRecord instance to continue traversing objects on. @param prefix [String, Symbol] The cased
# File lib/cased/rails/model.rb, line 24 def cased_payload_belongs_to_associations(object, payload, prefix: nil) klass = object.class klass.reflect_on_all_associations(:belongs_to).each do |association| association_value = object.send(association.name) if association_value.nil? next if association.options[:optional] raise ArgumentError, "Expected #{klass}##{association.name} association to not return nil" end key = "#{prefix && "#{prefix}_"}#{association.name}".to_sym payload[key] = association_value cased_payload_belongs_to_associations(association_value, payload, prefix: association.name) end end