Hello.

I think 'discard_changes' should be upgraded because:
- it clears all the data in object. Suppose there was non-db data in the
object:
     __PACKAGE__->mk_accessors(....);
  'discard_changes' clears it all. I think this is not good.

- it does not accept $attrs. For example there is often a need to refresh
object from database with
  exclusive lock, like $row->discard_changes({lock_for => 'update'});

- I think it should fetch only data without a need of constructing a heavy
object. I.e.

    my ($self, $attrs) = @_;
    return unless $self->in_storage;

    my $rs = $self->result_source->resultset;
    $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');

    my $hash_ref = $rs->find({
        map { $_ => $self->get_column($_) } $self->primary_columns,
    }, $attrs);

    $self->set_columns($hash_ref);
    delete $self->{_dirty_columns};


With best regards.
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]

Reply via email to