Sha256: e57dac53963e05db36c641752bbb512b79e9ef806b77f1f7c70f9032b73d2668
Contents?: true
Size: 1.46 KB
Versions: 21
Compression:
Stored size: 1.46 KB
Contents
module ForestLiana class AssociationsController < ForestLiana::ApplicationController before_filter :find_resource before_filter :find_association def index getter = HasManyGetter.new(@resource, @association, params) getter.perform render json: serialize_models(getter.records, include: includes, count: getter.count, params: params) end private def find_resource @resource = SchemaUtils.find_model_from_table_name(params[:collection]) if @resource.nil? || !@resource.ancestors.include?(ActiveRecord::Base) render json: {status: 404}, status: :not_found end end def find_association # Rails 3 wants a :sym argument. @association = @resource.reflect_on_association( params[:association_name].try(:to_sym)) # Only accept "many" associations if @association.nil? || [:belongs_to, :has_one].include?(@association.macro) render json: {status: 404}, status: :not_found end end def resource_params ResourceDeserializer.new(@resource, params[:resource]).perform end def includes @association.klass .reflect_on_all_associations .select do |a| [:belongs_to, :has_and_belongs_to_many].include?(a.macro) && !a.options[:polymorphic] end .map {|a| a.name.to_s } end end end
Version data entries
21 entries across 21 versions & 1 rubygems
Version | Path |
---|---|
forest_liana-1.1.30 | app/controllers/forest_liana/associations_controller.rb |