module Virtus::Extensions::Methods

Private Class Methods

extended(descendant) click to toggle source

@api private

Calls superclass method
# File lib/virtus/extensions.rb, line 30
def self.extended(descendant)
  super
  descendant.extend(AttributeSet.create(descendant))
end

Public Instance Methods

attribute(name, type = nil, options = {}) click to toggle source

Defines an attribute on an object's class or instance

@example

class Book
  include Virtus.model

  attribute :title,        String
  attribute :author,       String
  attribute :published_at, DateTime
  attribute :page_count,   Integer
  attribute :index                   # defaults to Object
end

@param [Symbol] name

the name of an attribute

@param [Class,Array,Hash,Axiom::Types::Type,String,Symbol] type

the type class of an attribute

@param [#to_hash] options

the extra options hash

@return [self]

@see Virtus::Attribute.build

@api public

# File lib/virtus/extensions.rb, line 63
def attribute(name, type = nil, options = {})
  assert_valid_name(name)
  attribute_set << Attribute.build(type, options.merge(:name => name))
  self
end
values() { || ... } click to toggle source

@see Virtus.default_value

@api public

# File lib/virtus/extensions.rb, line 72
def values(&block)
  private :attributes= if instance_methods.include?(:attributes=)
  yield
  include(::Equalizer.new(*attribute_set.map(&:name)))
end

Private Instance Methods

attribute_set() click to toggle source

Return an attribute set for that instance

@return [AttributeSet]

@api private

# File lib/virtus/extensions.rb, line 85
def attribute_set
  @attribute_set
end