[Moscow.pm] DBIx::Class. Это так и долно быть?

Yuri Pats yu.pats на gmail.com
Пн Мар 15 00:45:42 PDT 2010


Привет. Прикольный баг/фича.

Чтоб избавиться я отнаследовался от DBIx::Class::ResultSet и
переопределил find как-то так:

sub find {
my $self = shift;
my $id = shift;

return unless $id;
$self->next::method($id, @_);
}

В схеме указываем default_resultset_class => 'наш отнаследованный класс'

PS Такой workaround прокатывает только, если вызывать find($id), для
более сложных usecases надо написать более сложный обработчик.

PPS В документации написано:
Return Value: $row_object | undef
:(

2010/3/15 Oleg Malyovaniyi <deer_oleg на mail.ru>:
> Поясните плиз, может кто сталкивался, почему так получается?
> $o ||= $c->model('DB::table')->new({});
>
> $o->set_columns({
>
>               'name' => ‘test’,
>
> });
>
> $o->insert_or_update;
>
>
>
> my $test = $c->model(' DB::table ')->find(undef,);
>
> print $test->name if $test;
>
> и оно печатает имя только что добавленной записи..
>
>
>
> если попробовать вот так:
>
> my $test = $c->model(' DB::table ')->find();
>
> то возвращает самую первую записть из таблицы.
>
>
>
> Мне интересно, можно ли это дело как то отключить?
>
> чтобы если ничего не указал – ничего не возвращало.
>
>


-- 
WBR, Yuri Pats


Подробная информация о списке рассылки Moscow-pm