Sha256: 7fe92ab05376268efa5508db619b8f7100b050fa481c3fc6041cc09ebe9793a4

Contents?: true

Size: 666 Bytes

Versions: 2

Compression:

Stored size: 666 Bytes

Contents

require 'active_model/serializer/reflection'

module ActiveModel
  class Serializer
    class Reflection < Field
      def authorize?
        !!options[:authorize]
      end

      def value_with_cancan(serializer)
        val = value_without_cancan(serializer)
        unless authorize?
          return val
        end
        if val.kind_of?(Array)
          val.select do |item|
            serializer.current_ability.can?(:read, item)
          end
        else
          if serializer.current_ability.can?(:read, val)
            val
          else
            nil
          end
        end
      end
      alias_method_chain :value, :cancan
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
active_model_serializers_cancancan-0.1.1 lib/active_model_serializers/cancan/associations.rb
active_model_serializers_cancancan-0.1.0 lib/active_model_serializers/cancan/associations.rb