OSDN Git Service

Model::Users: fix to inherit transaction state from Users instance
authorhylom <hylom@users.sourceforge.jp>
Fri, 9 Nov 2018 10:21:36 +0000 (19:21 +0900)
committerhylom <hylom@users.sourceforge.jp>
Fri, 9 Nov 2018 10:21:36 +0000 (19:21 +0900)
src/newslash_web/lib/Newslash/Model/Users.pm

index d74a95b..345b27e 100644 (file)
@@ -93,7 +93,15 @@ sub permissions  { return shift->_get_model("_permissions",  '::Users::Permissio
 
 sub _get_model {
     my ($self, $name, $class) = @_;
-    return $self->{$name} ||= $self->new_instance_of($class);
+    if (!$self->{$name}) {
+        $self->{$name} = $self->new_instance_of($class);
+    }
+    else {
+        if ($self->transaction_mode && !$$self->{$name}->transaction_mode) {
+            $self->{$name}->use_transaction($self->{_tr_dbh});
+        }
+    }
+    return $self->{$name};
 }
 
 ##### utility functions