31 lines
730 B
Ruby
31 lines
730 B
Ruby
class Column < ApplicationRecord
|
|
include Positioned
|
|
|
|
belongs_to :collection, touch: true
|
|
has_many :cards, dependent: :nullify
|
|
|
|
validates :name, presence: true
|
|
validates :color, presence: true
|
|
|
|
before_validation :set_default_color
|
|
after_save_commit :touch_all_cards_later, if: :should_invalidate_cards?
|
|
after_destroy_commit :touch_all_collection_cards
|
|
|
|
private
|
|
def set_default_color
|
|
self.color ||= Card::DEFAULT_COLOR
|
|
end
|
|
|
|
def touch_all_cards_later
|
|
Card::TouchAllJob.perform_later(self)
|
|
end
|
|
|
|
def should_invalidate_cards?
|
|
saved_change_to_name? || saved_change_to_color?
|
|
end
|
|
|
|
def touch_all_collection_cards
|
|
Card::TouchAllJob.perform_later(collection)
|
|
end
|
|
end
|