Sha256: ea185eb2892f58fe92da8d0c77c57b9ea9fd2a0d1e2a62031a3d0e3ffc784327
Contents?: true
Size: 1.32 KB
Versions: 224
Compression:
Stored size: 1.32 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 # For EffectiveLogging. This is a protected keyword I think. def message(*args) method_missing(:message, args) 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
224 entries across 224 versions & 1 rubygems