Class: RailsBestPractices::Reviews::CheckSaveReturnValueReview

Inherits:
Review
  • Object
show all
Includes:
Classable
Defined in:
lib/rails_best_practices/reviews/check_save_return_value_review.rb

Overview

Review all code to make sure we either check the return value of “save”, “update_attributes” and “create” or use “save!”, “update_attributes!”, or “create!”, respectively.

See the best practice details here rails-bestpractices.com/posts/2012/11/02/check-the-return-value-of-save-otherwise-use-save/

Implementation:

Review process:

Track which nodes are used by 'if', 'unless', '&&' nodes etc. as we pass them by.
Check all "save" calls to check the return value is used by a node we have visited.

Constant Summary

Constants inherited from Core::Check

Core::Check::ALL_FILES, Core::Check::CAPFILE, Core::Check::CONFIG_FILES, Core::Check::CONTROLLER_FILES, Core::Check::DEPLOY_FILES, Core::Check::GEMFILE_LOCK, Core::Check::HELPER_FILES, Core::Check::INITIALIZER_FILES, Core::Check::MAILER_FILES, Core::Check::MIGRATION_FILES, Core::Check::MODEL_FILES, Core::Check::PARTIAL_VIEW_FILES, Core::Check::ROUTE_FILES, Core::Check::SCHEMA_FILE, Core::Check::SKIP_FILES, Core::Check::VIEW_FILES

Instance Method Summary collapse

Methods inherited from Review

#model_associations, #model_attributes, #models, #remember_variable_use_count, #reset_variable_use_count, #variable, #variable_use_count

Methods inherited from Core::Check

#add_error, debug, debug?, #errors, #initialize, #is_ignored?, #is_interesting_file?, #method_missing, #parse_file?, #regex_ignored_files, #url, url

Constructor Details

This class inherits a constructor from RailsBestPractices::Core::Check

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class RailsBestPractices::Core::Check

Instance Method Details

#model_classnamesObject



57
58
59
# File 'lib/rails_best_practices/reviews/check_save_return_value_review.rb', line 57

def model_classnames
  @model_classnames ||= models.map(&:to_s)
end

#return_value_is_used?(node) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
# File 'lib/rails_best_practices/reviews/check_save_return_value_review.rb', line 51

def return_value_is_used?(node)
  return false unless @used_return_value_of

  (node == @used_return_value_of) || @used_return_value_of.include?(node)
end