Sha256: 640f42e8b254986d2337c66818d6266b90aff097589cd1748197ed37773e5bea
Contents?: true
Size: 1006 Bytes
Versions: 1
Compression:
Stored size: 1006 Bytes
Contents
require "va/version" module Va class Model attr_reader :attributes def initialize(**args) @attributes = {} args.each do |k, v| key = k.to_sym @attributes[key] = v if self.class.keys.include?(key) end end def valid? self.class.validations.all? { |attrs, validation| validation.call(attrs.map { |attr| self.send(attr)}) } end private def self.validations @validations ||= [] end def self.validate(*attrs, &block) attrs.each do |attr| raise UnknownAttribute unless keys.include?(attr) end validations << [attrs, block] end def self.keys @keys ||= [] end def self.attribute(attr_name) name = attr_name.to_sym self.keys << name define_method "#{name}=" do |value| attributes[name] = value end define_method "#{name}" do attributes[name] end end end class UnknownAttribute < Exception; end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
va-0.0.3 | lib/va.rb |