I ought to have told you in advance?应该怎么理解

问题描述:

I ought to have told you in advance?应该怎么理解
正确的翻译是“我应该告诉你提前”但是我不理解的是为什么要用现在完成是呢?

我应该提前告诉你
ought to have done sth是本来应该做某事,而实际没做.
固定搭配