Sha256: 231806b99feffaf6b1355249bf3abafc9c2d8b44aee7189cd811429d9fd8e748
Contents?: true
Size: 1.93 KB
Versions: 14
Compression:
Stored size: 1.93 KB
Contents
# encoding: utf-8 require 'rails_best_practices/reviews/review' module RailsBestPractices module Reviews # Review a controller file to make sure that complex model logic should not exist in controller, should be moved into a model. # # See the best practice details here http://rails-bestpractices.com/posts/7-move-model-logic-into-the-model. # # Implementation: # # Review process: # check all method defines in the controller files, # if there are multiple method calls or attribute assignments apply to one subject, # and the subject is a local variable or an instance variable, # then they are complex model logic, and they should be moved into model. class MoveModelLogicIntoModelReview < Review def url "http://rails-bestpractices.com/posts/7-move-model-logic-into-the-model" end def interesting_nodes [:defn] end def interesting_files CONTROLLER_FILES end def initialize(options = {}) super() @use_count = options['use_count'] || 4 end # check method define node to see if there are multiple method calls and attribute assignments (more than @use_count defined) on one local variable or instance varialbe. # # it will check every call and attrasgn nodes, # if there are multiple call and attrasgn nodes who have the same subject, # and the subject is a local variable or an instance variable, # then these method calls and attribute assignments should be moved into model. def start_defn(node) node.grep_nodes(:node_type => [:call, :attrasgn]) do |child_node| remember_variable_use_count(child_node) end variable_use_count.each do |variable_node, count| add_error "move model logic into model (#{variable_node} use_count > #{@use_count})" if count > @use_count end reset_variable_use_count end end end end
Version data entries
14 entries across 14 versions & 2 rubygems