Class: Quickbooks::Model::BaseModel
- Inherits:
-
Object
- Object
- Quickbooks::Model::BaseModel
- Includes:
- ActiveModel::Validations, ROXML
- Defined in:
- lib/quickbooks/model/base_model.rb
Direct Known Subclasses
Account, AccountBasedExpenseLineDetail, BaseReference, Bill, BillLineItem, BillPayment, BillPaymentCheck, BillPaymentCreditCard, BillPaymentLineItem, CheckPayment, CompanyInfo, CreditCardPayment, CreditMemo, CustomField, Customer, DiscountOverride, EmailAddress, Employee, Invoice, InvoiceLineItem, Item, Line, LinkedTransaction, MetaData, OtherContactInfo, PaymentLineDetail, PaymentMethod, PhysicalAddress, SalesItemLineDetail, SalesReceipt, SubTotalLineDetail, TelephoneNumber, Vendor, WebSiteAddress
Class Method Summary collapse
-
.reference_setters(*args) ⇒ Object
Automatically generate an ID setter.
-
.resource_for_collection ⇒ Object
These can be over-ridden in each model object as needed.
- .resource_for_singular ⇒ Object
Instance Method Summary collapse
-
#to_xml_inject_ns(model_name, options = {}) ⇒ Object
ROXML doesnt insert the namespaces into generated XML so we need to do it ourselves insert the static namespaces in the first opening tag that matches the
model_name. - #to_xml_ns(options = {}) ⇒ Object
Class Method Details
.reference_setters(*args) ⇒ Object
Automatically generate an ID setter. Example:
reference_setters :discount_ref
Would generate a method like: def discount_id=(id) self.discount_ref = BaseReference.new(id) end
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/quickbooks/model/base_model.rb', line 45 def reference_setters(*args) args.each do |attribute| method_name = "#{attribute.to_s.gsub('_ref', '_id')}=".to_sym unless instance_methods(false).include?(method_name) method_definition = <<-METH def #{method_name}(id) self.#{attribute} = BaseReference.new(id) end METH class_eval(method_definition) end end end |
.resource_for_collection ⇒ Object
These can be over-ridden in each model object as needed
30 31 32 |
# File 'lib/quickbooks/model/base_model.rb', line 30 def resource_for_collection self::REST_RESOURCE end |
.resource_for_singular ⇒ Object
34 35 36 |
# File 'lib/quickbooks/model/base_model.rb', line 34 def resource_for_singular self::REST_RESOURCE end |
Instance Method Details
#to_xml_inject_ns(model_name, options = {}) ⇒ Object
ROXML doesnt insert the namespaces into generated XML so we need to do it ourselves
insert the static namespaces in the first opening tag that matches the model_name
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/quickbooks/model/base_model.rb', line 10 def to_xml_inject_ns(model_name, = {}) s = StringIO.new xml = to_xml().write_to(s, :indent => 0, :indent_text => '') destination_name = .fetch(:destination_name, nil) destination_name ||= model_name sparse = .fetch(:sparse, false) sparse_string = %{sparse="#{sparse}"} step1 = s.string.sub("<#{model_name}>", "<#{destination_name} #{Quickbooks::Service::BaseService::XML_NS} #{sparse_string}>") step2 = step1.sub("</#{model_name}>", "</#{destination_name}>") step2 end |
#to_xml_ns(options = {}) ⇒ Object
23 24 25 |
# File 'lib/quickbooks/model/base_model.rb', line 23 def to_xml_ns( = {}) to_xml_inject_ns(self.class::XML_NODE, ) end |