class RuboCop::Cop::Rails::NotNullColumn
add_reference :products, :category, null: false, default: 1
add_reference :products, :category
add_column :users, :name, :string, null: false, default: ”
add_column :users, :name, :string, null: true
# good
add_reference :products, :category, null: false
add_column :users, :name, :string, null: false
# bad
@example
in migration file.
This cop checks for add_column call with NOT NULL constraint
def check_add_column(node)
def check_add_column(node) pairs = add_not_null_column?(node) check_pairs(pairs) end
def check_add_reference(node)
def check_add_reference(node) pairs = add_not_null_reference?(node) check_pairs(pairs) end
def check_pairs(pairs)
def check_pairs(pairs) return unless pairs return if pairs.any? { |pair| has_default?(pair) } null_false = pairs.find { |pair| null_false?(pair) } return unless null_false add_offense(null_false, :expression) end
def on_send(node)
def on_send(node) check_add_column(node) check_add_reference(node) end