class Transaction < ApplicationRecord include Entryable, Transferable, Ruleable belongs_to :category, optional: true belongs_to :merchant, optional: true has_many :taggings, as: :taggable, dependent: :destroy has_many :tags, through: :taggings accepts_nested_attributes_for :taggings, allow_destroy: true class << self def search(params) Search.new(params).build_query(all) end end def set_category!(category) if category.is_a?(String) category = entry.account.family.categories.find_or_create_by!( name: category ) end update!(category: category) end end