class TopicTitleLengthValidator < ActiveModel::EachValidator

  def validate_each(record, attribute, value)
    title_validator(record).validate_each(record, attribute, value)
  end

  private

    def title_validator(record)
      length_range = if record.user.try(:admin?)
                       1..SiteSetting.max_topic_title_length
                     elsif record.private_message?
                       SiteSetting.private_message_title_length
                     else
                       SiteSetting.topic_title_length
                     end

      ActiveModel::Validations::LengthValidator.new({attributes: :title, in: length_range, allow_blank: true})
    end

end