Sha256: 9e3c757fcbb08c6fa54c50bbfbe69c06ce5e54867e638079f26637630d27ca47
Contents?: true
Size: 1.19 KB
Versions: 42
Compression:
Stored size: 1.19 KB
Contents
module Effective class ModelReader DATATYPES = [ :binary, :boolean, :date, :datetime, :decimal, :float, :hstore, :inet, :integer, :string, :text, :uuid, :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
42 entries across 42 versions & 1 rubygems