Sha256: b22adb0bbc653c17b688ddf7ef4adb53c8eac36404377470030657283acd7dcd

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

module ModelMirror
  # Get datas for views
  class MirrorController < ApplicationController
    before_filter do
      Rails.application.eager_load! if Rails.env.development?
    end

    def index
      @models = ActiveRecord::Base.descendants
    end

    def show
      @row = model_instance
      @has_manies = model_instance.send(params[:has_many]) if model_has_many
    end

    def list
      @rows = model_class.all
    end

    private

    def model_has_many
      model_class.reflect_on_association(params[:has_many])
    end

    def model_class
      params[:model_path].classify.constantize
    end
    helper_method :model_class

    def model_instance
      @model_instance ||= model_class.find(params[:id])
    end

    def has_many_relations(model_class)
      model_class.reflections.select do |_, relation|
        relation.is_a? ActiveRecord::Reflection::HasManyReflection or
          relation.is_a? ActiveRecord::Reflection::ThroughReflection
      end
    end
    helper_method :has_many_relations

    def belongs_to_relations(model_class)
      model_class.reflections.select do |_, relation|
        relation.is_a? ActiveRecord::Reflection::BelongsToReflection or
          relation.is_a? ActiveRecord::Reflection::HasOneReflection
      end
    end
    helper_method :belongs_to_relations
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
model_mirror-0.0.1 app/controllers/model_mirror/mirror_controller.rb