Class: Truelayer::BaseModel
- Inherits:
-
Object
- Object
- Truelayer::BaseModel
- Defined in:
- lib/truelayer/base_model.rb
Direct Known Subclasses
Account, AccountNumber, AuthLink, Balance, Card, Provider, Response, RunningBalance, Token, Transaction, TransactionMeta, WebhookPayload
Class Method Summary collapse
- .attribute_aliases(aliases = nil) ⇒ Object
- .attributes(*attributes) ⇒ Object
-
.build(json: {}) ⇒ Object
Sets all the instance variables by reading the JSON from API.
Instance Method Summary collapse
- #as_json ⇒ Object
-
#initialize(attributes = {}) ⇒ BaseModel
constructor
A new instance of BaseModel.
Constructor Details
#initialize(attributes = {}) ⇒ BaseModel
Returns a new instance of BaseModel.
35 36 37 38 39 |
# File 'lib/truelayer/base_model.rb', line 35 def initialize(attributes = {}) attributes.each do |attr, value| public_send("#{attr}=", value) end end |
Class Method Details
.attribute_aliases(aliases = nil) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/truelayer/base_model.rb', line 16 def attribute_aliases(aliases = nil) @attribute_aliases ||= {} return @attribute_aliases unless aliases @attribute_aliases.merge!(aliases) end |
.attributes(*attributes) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/truelayer/base_model.rb', line 6 def attributes(*attributes) @attributes ||= [] return @attributes unless attributes attr_accessor(*attributes) @attributes += attributes end |
.build(json: {}) ⇒ Object
Sets all the instance variables by reading the JSON from API
25 26 27 28 29 30 31 32 |
# File 'lib/truelayer/base_model.rb', line 25 def build(json: {}) new.tap do |record| attributes.each do |attr| key = attribute_aliases.key?(attr) ? attribute_aliases[attr] : attr record.public_send("#{attr}=", json[key]) end end end |
Instance Method Details
#as_json ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/truelayer/base_model.rb', line 41 def as_json self.class.attributes.each_with_object({}) do |attr, hash| value = public_send(attr) value = value.as_json if value.respond_to?(:as_json) if value.is_a?(Array) value = value.map { |v| v.respond_to?(:as_json) ? v.as_json : v } end value = value.iso8601 if value.respond_to?(:iso8601) hash[attr] = value end end |