summaryrefslogtreecommitdiff
path: root/Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm')
-rw-r--r--Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm10
1 files changed, 8 insertions, 2 deletions
diff --git a/Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm b/Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm
index 263ce55..32b40bb 100644
--- a/Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm
+++ b/Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm
@@ -14,6 +14,8 @@ has 'full_storage_slot' => (
sub _build_full_storage_slot { shift->name . '__MULTIVALUED_STORAGE__' }
requires 'multivalue_storage_class';
+requires 'opts_to_pass_set';
+requires 'opts_to_pass_get';
around slots => sub {
my ($orig, $self) = @_;
@@ -77,9 +79,11 @@ after install_accessors => sub {
sub load_multi_value {
my ($self,$instance,$opts) = @_;
+ my %opts_passed = map { $_ => $opts->{$_} } $self->opts_to_pass_get;
+
my $value;my $found=1;
try {
- $value = $self->full_storage($instance)->get($opts);
+ $value = $self->full_storage($instance)->get(\%opts_passed);
}
catch {
unless (ref($_) && $_->isa('Data::MultiValued::Exceptions::NotFound')) {
@@ -109,8 +113,10 @@ sub raw_clear_value {
sub store_multi_value {
my ($self,$instance,$opts) = @_;
+ my %opts_passed = map { $_ => $opts->{$_} } $self->opts_to_pass_set;
+
my $value = $self->get_raw_value($instance);
- $self->full_storage($instance)->set({%$opts,value=>$value});
+ $self->full_storage($instance)->set({%opts_passed,value=>$value});
}
our $dyn_opts = {};