module ROM::Model::Attributes

Mixin for validatable and coercible parameters

@example

class UserAttributes
  include ROM::Model::Attributes

  attribute :email, String
  attribute :age, Integer

  validates :email, :age, presence: true
end

user_attrs = UserAttributes.new(email: '', age: '18')

user_attrs.email # => ''
user_attrs.age # => 18

user_attrs.valid? # => false
user_attrs.errors # => #<ActiveModel::Errors:0x007fd2423fadb0 ...>

@api public

Constants

VirtusModel

Public Class Methods

included(base) click to toggle source

Inclusion hook used to extend a class with required interfaces

@api private

# File lib/rom/model/attributes.rb, line 34
def self.included(base)
  base.class_eval do
    include VirtusModel
    include ActiveModel::Conversion
  end
  base.extend(ClassMethods)
end

Public Instance Methods

model_name() click to toggle source

Return model name for the attributes class

The model name object is configurable using `set_model_name` macro

@see ClassMethods#set_model_name

@return [ActiveModel::Name]

@api public

# File lib/rom/model/attributes.rb, line 51
def model_name
  self.class.model_name
end