以下构造创建一个按预期运行的类型约束(在设置属性时检查“Roles :: Thing”角色)当一个属性因未传递约束而被拒绝时,我希望自定义错误消息“不是“出现的东西;但是仍然会给出默认的错误消息。我做错了什么?
role_type 'DoesThing', {
role => 'Roles::Thing',
message => sub { "Not a thing." }
};
更新:我在原帖中没有提供足够的上下文。我尝试使用新类型的方式是:
has things => (
isa => 'ArrayRef[DoesThing]'
);
类型验证确实按预期工作;但是我仍然收到默认的错误消息。我自定义的“Not a thing”错误消息不会像我预期的那样传播。
答案 0 :(得分:1)
错误消息是您为ArrayRef
类型获得的内容,无论您在其中所期望的是什么。
要获取自定义错误消息,您需要将ArrayRef
合并到您的类型声明中:
subtype 'ArrayOfThings',
as 'ArrayRef[Roles::Thing]',
message { 'Not an array of things' };