lib/databasedotcom/sobject/sobject.rb in databasedotcom-1.3.0 vs lib/databasedotcom/sobject/sobject.rb in databasedotcom-1.3.1

- old
+ new

@@ -12,19 +12,25 @@ # Returns a new Sobject. The default values for all attributes are set based on its description. def initialize(attrs = {}) super() self.class.description["fields"].each do |field| - self.send("#{field["name"]}=", field["defaultValueFormula"]) + if field['type'] =~ /(picklist|multipicklist)/ && picklist_option = field['picklistValues'].find { |p| p['defaultValue'] } + self.send("#{field["name"]}=", picklist_option["value"]) + elsif field['type'] =~ /boolean/ + self.send("#{field["name"]}=", field["defaultValue"]) + else + self.send("#{field["name"]}=", field["defaultValueFormula"]) + end end self.attributes=(attrs) end # Returns a hash representing the state of this object def attributes self.class.attributes.inject({}) do |hash, attr| - hash[attr] = self.send(attr.to_sym) + hash[attr] = self.send(attr.to_sym) if self.respond_to?(attr.to_sym) hash end end # Set attributes of this object, from a hash, in bulk @@ -312,9 +318,10 @@ params.each do |attr, value| case self.field_type(attr) when "boolean" params[attr] = value.is_a?(String) ? value.to_i != 0 : value when "currency", "percent", "double" + value = value.gsub(/[^-0-9.0-9]/, '').to_f if value.respond_to?(:gsub) params[attr] = value.to_f when "date" params[attr] = Date.parse(value) rescue Date.today when "datetime" params[attr] = DateTime.parse(value) rescue DateTime.now