Sha256: a00a93665f2bc14f67a20fff8c8d219adb4b0ecdc520f74b6f61d3eb34d822e2

Contents?: true

Size: 661 Bytes

Versions: 1

Compression:

Stored size: 661 Bytes

Contents

module CanTango
  module PermissionEngine
    module Parser
      class Ownership < Rule
        attr_reader :model_class, :owner

        def parse
          match = target[/(\w+)#(\w+)/]

          @target = match[$1]
          @owner = match[$2]
          @model_class = try_class
          build_ownership_dsl
        end

        protected

        def build_ownership_dsl
          raise "#{model_class} has no ##{owner}!" if !model_class.new.respond_to?(owner.to_sym)
          ownership_dsl_lines
        end

        def ownership_dsl_lines
          "#{owner.singularize}_of(#{target}).#{method} :#{action}"
        end
      end
    end
  end
end



Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cantango-0.8.0 lib/cantango/permission_engine/parser/ownership.rb