Sha256: e55c4852a468ffc0e6dc1fcbbc129fab418d4c73948d256b0cacce80401e56cb
Contents?: true
Size: 1.42 KB
Versions: 14
Compression:
Stored size: 1.42 KB
Contents
module Eventsimple class ModelsController < ApplicationController def show @model_name = params[:name] model_class = event_classes.find { |d| d.name == @model_name } scope = apply_filter(model_class, model_class.event_class) @latest_entities = scope.last(20).reverse check_redirect_to_entity end private def apply_filter(model_class, model_event_class) filter_columns = model_class._filter_attributes params_filters = params.permit(filters: {})[:filters] || {} @filters = filter_columns.to_h { |column| [column, params_filters[column]] } return model_event_class unless @filters.any? aggregate_class_symbol = model_event_class._aggregate_klass.model_name.element.to_sym model_event_class = model_event_class.joins(aggregate_class_symbol) @filters.each do |key, value| next if value.blank? key = model_event_class._aggregate_id if key == :aggregate_id model_event_class = model_event_class.where({ aggregate_class_symbol => { key => value } }) end model_event_class end def check_redirect_to_entity return unless @latest_entities.any? first_aggregate_id = @latest_entities.first.aggregate_id return unless @latest_entities.all? { |entity| entity.aggregate_id == first_aggregate_id } redirect_to model_entity_path(@model_name, first_aggregate_id, filters: @filters) end end end
Version data entries
14 entries across 14 versions & 1 rubygems