module Virtus::ValueObject::ClassMethods
Public Instance Methods
attribute(name, type, options = {})
click to toggle source
Define an attribute on the receiver
The Attribute will have private writer methods (eg., immutable instances)
and be used in equality/equivalence comparisons
@example
class GeoLocation include Virtus::ValueObject attribute :latitude, Float attribute :longitude, Float end
@see Virtus::Extensions::Methods#attribute
@return [self]
@api public
Calls superclass method
# File lib/virtus/value_object.rb, line 119 def attribute(name, type, options = {}) equalizer << name super name, type, options.merge(:writer => :private) end
equalizer()
click to toggle source
Define and include a module that provides Value Object semantics
Included module will have inspect, eql?, #== and hash methods whose definition is based on the keys argument
@example
virtus_class.equalizer
@return [Equalizer]
An Equalizer module which defines #inspect, #eql?, #== and #hash for instances of this class
@api public
# File lib/virtus/value_object.rb, line 137 def equalizer @equalizer ||= begin equalizer = Virtus::Equalizer.new(name || inspect) include equalizer equalizer end end