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 |