Module: ActiveZuora::Fields::ClassMethods
- Defined in:
- lib/active_zuora/fields.rb
Instance Method Summary collapse
- #add_field(name, field) ⇒ Object
- #default_attributes ⇒ Object
- #field(name, type, options = {}) ⇒ Object
- #field?(name) ⇒ Boolean
- #field_names ⇒ Object
- #fields ⇒ Object
- #fields_by_name ⇒ Object
- #get_field(name) ⇒ Object
- #get_field!(name) ⇒ Object
Instance Method Details
#add_field(name, field) ⇒ Object
85 86 87 88 89 |
# File 'lib/active_zuora/fields.rb', line 85 def add_field(name, field) fields_by_name[name.to_sym] = field # Define the setters, getters, and changed helpers. field.define_instance_methods(self) end |
#default_attributes ⇒ Object
121 122 123 124 125 |
# File 'lib/active_zuora/fields.rb', line 121 def default_attributes default_attributes = {} fields.each { |field| default_attributes[field.name] = field.default } default_attributes end |
#field(name, type, options = {}) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/active_zuora/fields.rb', line 99 def field(name, type, ={}) # Check if this field should be an array, don't pass # this option down to the field. field_is_array = .delete(:array) || false # Create and register the field. field = case type when :string then StringField.new(name, namespace, ) when :boolean then BooleanField.new(name, namespace, ) when :integer then IntegerField.new(name, namespace, ) when :decimal then DecimalField.new(name, namespace, ) when :date then DateField.new(name, namespace, ) when :datetime then DateTimeField.new(name, namespace, ) when :object class_name = [:class_name] || nested_class_name(name.to_s.camelize) ObjectField.new(name, namespace, class_name, ) else ArgumentError.new "Unknown field type: #{type}" end field = ArrayFieldDecorator.new(field) if field_is_array add_field(name, field) end |
#field?(name) ⇒ Boolean
81 82 83 |
# File 'lib/active_zuora/fields.rb', line 81 def field?(name) fields_by_name.key?(name.to_sym) end |
#field_names ⇒ Object
77 78 79 |
# File 'lib/active_zuora/fields.rb', line 77 def field_names fields_by_name.keys end |
#fields ⇒ Object
73 74 75 |
# File 'lib/active_zuora/fields.rb', line 73 def fields fields_by_name.values end |
#fields_by_name ⇒ Object
68 69 70 71 |
# File 'lib/active_zuora/fields.rb', line 68 def fields_by_name # { :field_name_symbol => field_object } @fields ||= {} end |
#get_field(name) ⇒ Object
91 92 93 |
# File 'lib/active_zuora/fields.rb', line 91 def get_field(name) fields_by_name[name.to_sym] end |
#get_field!(name) ⇒ Object
95 96 97 |
# File 'lib/active_zuora/fields.rb', line 95 def get_field!(name) get_field(name) || raise(ArgumentError.new("No field in #{self} named #{name}")) end |