Module: AlphaCard::Attribute::InstanceMethods

Defined in:
lib/alpha_card/attribute.rb

Overview

Attributes class methods

* initialize
* attributes
* []

Instance Method Summary collapse

Instance Method Details

#[](name) ⇒ Object

Returns attribute value by it’s name.

Examples:

class User
  include AlphaCard::Attribute

  attribute :email
end

u = User.new(email: '[email protected]')
u[:email]
#=> '[email protected]'

Parameters:

  • name (String, Symbol)

    attribute name

Returns:

  • (Object)

    attribute value



255
256
257
# File 'lib/alpha_card/attribute.rb', line 255

def [](name)
  __send__(name)
end

#attributesHash

Returns class instance attributes.

Examples:

class User
  include AlphaCard::Attribute

  attribute :email
  attribute :name, default: 'John'
end

User.new.attributes
#=> { email: nil, name: 'John' }

Returns:

  • (Hash)

    attributes of the instance object



232
233
234
235
236
# File 'lib/alpha_card/attribute.rb', line 232

def attributes
  self.class.attributes_set.each_with_object({}) do |(name, _), attributes|
    attributes[name] = __send__(name)
  end
end

#initialize(attributes = {}) ⇒ Object

Constructor supports setting attributes when creating a new instance of the class. Sets default values for the attributes if they are present.

Examples:

class User
  include AlphaCard::Attribute

  attribute :email
  attribute :name, default: 'John'
end

User.new(email: '[email protected]')
#=> #<User:0x29cca00 @email='[email protected]', @name="John">

Parameters:

  • attributes (Hash) (defaults to: {})

    attributes hash



209
210
211
212
213
214
215
# File 'lib/alpha_card/attribute.rb', line 209

def initialize(attributes = {})
  set_attributes_defaults!

  attributes.each do |name, value|
    set_attribute_safely(name, value)
  end
end

#required_attributesArray

Returns names of the attributes that was marked as :required.

Examples:

class User
  include AlphaCard::Attribute

  attribute :id
  attribute :email, required: true
  attribute :name, required: true
end

u = User.new
u.required_attributes
#=> [:email, :name]

Returns:

  • (Array)

    array of attributes names



276
277
278
# File 'lib/alpha_card/attribute.rb', line 276

def required_attributes
  self.class.attributes_set.select { |_, options| options[:required] }.keys
end

#required_attributes?Bool

Indicates if all the attributes with option required: true are filled with non-nil value.

Examples:

class User
  include AlphaCard::Attribute

  attribute :email, required: true
  attribute :name
end

u = User.new
u.required_attributes?
#=> false

u.email = '[email protected]'
u.required_attributes?
#=> true

Returns:

  • (Bool)


301
302
303
# File 'lib/alpha_card/attribute.rb', line 301

def required_attributes?
  required_attributes.all? { |attr| !self[attr].nil? }
end