Sha256: f7d9f54a95654da7a38a065060b90c6b07fa653dd47e4d3ceb87eb84cf891bcd

Contents?: true

Size: 808 Bytes

Versions: 2

Compression:

Stored size: 808 Bytes

Contents

module CanField
  module CanCan
    module AbilityAdditions
      # see README.md
      def canf(actions, target, fields)
        unless actions.is_a? Array
          actions = [actions]
        end

        unless fields.is_a? Array
          fields = [fields]
        end

        actions.each do |action|
          can action.to_sym, target
        end

        actions.product(fields).each do |x|
          action, field = x
          can "_cf_#{action}_fl_#{field}".to_sym, target
        end
      end

      # for internal use
      def abilities_for_subject(subject)
        @rules.select{|a| a.relevant_for_subject? subject}.map(&:actions).flatten.uniq
      end
    end
  end
end

if defined? CanCan::Ability
  CanCan::Ability.class_eval do
    include CanField::CanCan::AbilityAdditions
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
can_field-0.0.2 lib/can_field/can_can/ability_additions.rb
can_field-0.0.1 lib/can_field/can_can/ability_additions.rb