代码之家  ›  专栏  ›  技术社区  ›  gregnnylf94

如何在不更新实际数据库的情况下更改DBIx::Class对象值

  •  1
  • gregnnylf94  · 技术社区  · 7 年前

    我正在检查我的一个应用程序中是否存在不匹配的用户名。 如果它发现不匹配的用户名,我会将该值包装在 <mark> 标签。

    我想在将DBIx::Class对象的用户名值传递回JS之前更新它。

    我现在有下面的,这几乎是我想要的,但不完全。

    my $mismatch_username = check_for_mismatch_username($self, $id, 'AD');
        if(defined $mismatch_username)
        {
          my $flagged_username = "<mark>".$info->accountname."</mark> <font color=\"red\">(Mismatch: $mismatch_username)</font>";
           $info->update({accountname => $flagged_username});
        }
    $info = {$info->get_columns};
    $self->render(json => {info => $info});
    

    1 回复  |  直到 7 年前
        1
  •  2
  •   user149341 user149341    7 年前

    如果不想修改对象,请不要修改它。

    (当然,您可以在不保存字段的情况下使用 $info->accountname(…) . 但这仍然会使对象处于修改状态,其他代码可能会保存它。如果HTML标记被现场验证器拒绝,它也可能失败。)

    my $data = { $info->get_columns };
    if (defined $mismatch_username) {
        $data->{accountname} = "<mark>…";
    }
    $self->render(json => { info => $data });