class RuboCop::Cop::Rails::NotNullColumn

This cop checks for add_column call with NOT NULL constraint in migration file.

@example

# bad
add_column :users, :name, :string, null: false
add_reference :products, :category, null: false

# good
add_column :users, :name, :string, null: true
add_column :users, :name, :string, null: false, default: ''
add_reference :products, :category
add_reference :products, :category, null: false, default: 1

Constants

MSG

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/cop/rails/not_null_column.rb, line 38
def on_send(node)
  check_add_column(node)
  check_add_reference(node)
end

Private Instance Methods

check_add_column(node) click to toggle source
# File lib/rubocop/cop/rails/not_null_column.rb, line 45
def check_add_column(node)
  pairs = add_not_null_column?(node)
  check_pairs(pairs)
end
check_add_reference(node) click to toggle source
# File lib/rubocop/cop/rails/not_null_column.rb, line 50
def check_add_reference(node)
  pairs = add_not_null_reference?(node)
  check_pairs(pairs)
end
check_pairs(pairs) click to toggle source
# File lib/rubocop/cop/rails/not_null_column.rb, line 55
def check_pairs(pairs)
  return unless pairs
  return if pairs.any? { |pair| default_option?(pair) }

  null_false = pairs.find { |pair| null_false?(pair) }
  return unless null_false

  add_offense(null_false)
end