diff options
Diffstat (limited to 'lib/Bread/Board/Declare/Role/Service.pm')
-rw-r--r-- | lib/Bread/Board/Declare/Role/Service.pm | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Bread/Board/Declare/Role/Service.pm b/lib/Bread/Board/Declare/Role/Service.pm index e0b36f9..96bdaf7 100644 --- a/lib/Bread/Board/Declare/Role/Service.pm +++ b/lib/Bread/Board/Declare/Role/Service.pm @@ -29,12 +29,17 @@ around get => sub { my $self = shift; my $container = $self->parent_container; + my $attr = $self->associated_attribute; - if ($self->associated_attribute->has_value($container)) { - return $self->associated_attribute->get_value($container); + if ($attr->has_value($container)) { + return $attr->get_value($container); } - return $self->$orig(@_); + my $val = $self->$orig(@_); + $attr->verify_against_type_constraint($val, instance => $container) + if $attr->has_type_constraint; + + return $val; }; =method parent_container |