Check
Check db/schema.rb file to make sure every reference key has a database index.
Implementation: read all add_index method calls to get the indexed columns in table, then read integer method call in create_table block to get the reference columns in tables, compare with indexed columns, if not in the indexed columns, then it violates always_add_db_index_check.
# File lib/rails_best_practices/checks/always_add_db_index_check.rb, line 23 def evaluate_start(node) if :block == node.node_type find_index_columns(node) elsif :call == node.node_type case node.message when :create_table @table_name = node.arguments[1].to_ruby_string when :integer column_name = node.arguments[1].to_ruby_string if column_name =~ /_id$/ and !indexed?(@table_name, column_name) add_error "always add db index (#@table_name => #{column_name})", node.file, node.line end end end end
Generated with the Darkfish Rdoc Generator 2.