Sha256: a8293ee92a2f386c6fef11cbb501e50b5d0833ff3e98706d78e5806cf2d571f1

Contents?: true

Size: 1.16 KB

Versions: 51

Compression:

Stored size: 1.16 KB

Contents

module Effective
  class ModelReader
    DATATYPES = [:binary, :boolean, :date, :datetime, :decimal, :float, :hstore, :inet, :integer, :string, :text, :permitted_param]

    attr_reader :attributes

    def initialize(&block)
      @attributes = {}
    end

    def read(&block)
      instance_exec(&block)
    end

    def method_missing(m, *args, &block)
      if m == :timestamps
        attributes[:created_at] = [:datetime]
        attributes[:updated_at] = [:datetime]
        return
      end

      # Not really an attribute, just a permitted param.
      # something permitted: true
      if args.first.kind_of?(Hash) && args.first.key?(:permitted)
        args.unshift(:permitted_param)
      end

      # Specifying permitted param attributes
      # invitation [:name, :email], permitted: true
      if args.first.kind_of?(Array)
        options = args.find { |arg| arg.kind_of?(Hash) } || { permitted: true }
        args = [:permitted_param, options.merge(permitted_attributes: args.first)]
      end

      unless DATATYPES.include?(args.first)
        raise "expected first argument to be a datatype. Try name :string"
      end

      attributes[m] = args
    end

  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
effective_resources-1.5.1 app/models/effective/model_reader.rb
effective_resources-1.5.0 app/models/effective/model_reader.rb
effective_resources-1.4.13 app/models/effective/model_reader.rb
effective_resources-1.4.12 app/models/effective/model_reader.rb
effective_resources-1.4.11 app/models/effective/model_reader.rb
effective_resources-1.4.10 app/models/effective/model_reader.rb
effective_resources-1.4.9 app/models/effective/model_reader.rb
effective_resources-1.4.8 app/models/effective/model_reader.rb
effective_resources-1.4.7 app/models/effective/model_reader.rb
effective_resources-1.4.6 app/models/effective/model_reader.rb
effective_resources-1.4.5 app/models/effective/model_reader.rb
effective_resources-1.4.4 app/models/effective/model_reader.rb
effective_resources-1.4.3 app/models/effective/model_reader.rb
effective_resources-1.4.2 app/models/effective/model_reader.rb
effective_resources-1.4.1 app/models/effective/model_reader.rb
effective_resources-1.4.0 app/models/effective/model_reader.rb
effective_resources-1.3.16 app/models/effective/model_reader.rb
effective_resources-1.3.15 app/models/effective/model_reader.rb
effective_resources-1.3.14 app/models/effective/model_reader.rb
effective_resources-1.3.13 app/models/effective/model_reader.rb