Module: ZendeskAPI::Save
- Includes:
- ResponseHandler
- Included in:
- Create, Request::Comment, Ticket::Comment, Update
- Defined in:
- lib/zendesk_api/actions.rb
Instance Method Summary collapse
-
#clear_associations ⇒ Object
Removes all cached associations.
-
#save(options = {}, &block) ⇒ Object
Saves, returning false if it fails and attaching the errors.
-
#save!(options = {}) ⇒ Boolean
If this resource hasn’t been deleted, then create or save it.
-
#save_associations ⇒ Object
Saves associations Takes into account inlining, collections, and id setting on the parent resource.
Methods included from ResponseHandler
Instance Method Details
#clear_associations ⇒ Object
Removes all cached associations
56 57 58 59 60 61 |
# File 'lib/zendesk_api/actions.rb', line 56 def clear_associations self.class.associations.each do |association_data| name = association_data[:name] instance_variable_set("@#{name}", nil) if instance_variable_defined?("@#{name}") end end |
#save(options = {}, &block) ⇒ Object
Saves, returning false if it fails and attaching the errors
46 47 48 49 50 51 52 53 |
# File 'lib/zendesk_api/actions.rb', line 46 def save( = {}, &block) save!(, &block) rescue ZendeskAPI::Error::RecordInvalid => e @errors = e.errors false rescue ZendeskAPI::Error::ClientError false end |
#save!(options = {}) ⇒ Boolean
If this resource hasn’t been deleted, then create or save it. Executes a POST if it is a Data#new_record?, otherwise a PUT. Merges returned attributes on success.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/zendesk_api/actions.rb', line 17 def save!( = {}) return false if respond_to?(:destroyed?) && destroyed? if new_record? && ![:force_update] method = :post req_path = path else method = :put req_path = url || path end req_path = [:path] if [:path] save_associations @response = @client.connection.send(method, req_path) do |req| req.body = attributes_for_save.merge(@global_params) yield req if block_given? end handle_response(@response) @attributes.clear_changes clear_associations true end |
#save_associations ⇒ Object
Saves associations Takes into account inlining, collections, and id setting on the parent resource.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/zendesk_api/actions.rb', line 65 def save_associations self.class.associations.each do |association_data| association_name = association_data[:name] next unless send("#{association_name}_used?") && association = send(association_name) inline_creation = association_data[:inline] == :create && new_record? changed = association.is_a?(Collection) || association.changed? if association.respond_to?(:save) && changed && !inline_creation && association.save send("#{association_name}=", association) # set id/ids columns end if (association_data[:inline] == true || inline_creation) && changed attributes[association_name] = association.to_param end end end |