class Column < ApplicationRecord include Colored, Positioned belongs_to :account, default: -> { board.account } belongs_to :board, touch: true has_many :cards, dependent: :nullify after_save_commit -> { cards.touch_all }, if: -> { saved_change_to_name? || saved_change_to_color? } after_create_commit -> { sibling_columns.touch_all } after_destroy_commit -> { board.cards.touch_all; sibling_columns.touch_all } def sibling_columns board.columns.where.not(id:).sorted end end