Если у вас есть такая строчка
__PACKAGE__->load_components('InflateColumn::Serializer'), то должна.2015-06-24 12:34 GMT+03:00 Alex Povolotsky <[email protected]>: > Из Client.pm: > > __PACKAGE__->add_columns( > "id", > { > data_type => "integer", > is_auto_increment => 1, > is_nullable => 0, > sequence => "clients_id_seq", > }, > "type", > { data_type => "integer", is_foreign_key => 1, is_nullable => 0 }, > "data", > { data_type => "jsonb", is_nullable => 0, serializer_class => "JSON" }, > ); > > то есть, как я понимаю, сериализация/десериализация должна делаться > автоматом. > > On 23.06.2015 19:18, Dmitry L. wrote: >> Так если у вас InflateColumn, то вам явно нужно сделать >> ->set_inflated_columns для объекта модели. >> >> Я обычно переопределял update_model из >> HTML::FormHandler::TraitFor::Model::DBIC >> >> >> 2015-06-23 18:15 GMT+03:00 Alex Povolotsky <[email protected]>: >>> HTML::FormHandlerX::Field::JSON - совсем не то. Он подстраивает вывод >>> под json, а у меня форма строго определенная. >>> >>> Вообще, я пытаюсь связать HTML::FormHandler с DBIx::Class и >>> DBIx::Class::InflateColumn::Serializer, но, если я не пытаюсь явно >>> превратить хэш в json до передачи в модель, то >>> >>> SQL::Abstract::belch(): [SQL::Abstract::__ANON__] Warning: HASH ref as >>> bind value in insert is not supported at >>> /usr/local/lib/perl5/site_perl/HTML/FormHandler/TraitFor/Model/DBIC.pm >>> line 85 >>> INSERT INTO clients ( data, type) VALUES ( ?, ? ) RETURNING id: >>> 'HASH(0x80d751528)', '1' >>> >>> >>> а если пытаюсь, то >>> >>> [Tue Jun 23 18:08:34 2015] [error] Can't use string >>> ("{"region":null,"full_name":null,"...) as a HASH ref while "strict >>> refs" in use at >>> /usr/local/lib/perl5/site_perl/HTML/FormHandler/InitResult.pm line 144. >>> >>> >>> On 23.06.2015 17:59, Dmitry L. wrote: >>>> А для чего вы используете HFH? Валидация и рендер форм? Или только >>>> валидация? >>>> >>>> Если только для валидации, то никакой HFH::Field::JSON вам, наверное, >>>> не нужен. Достаточно Compound. >>>> Если кроме валидации ещё и формы рендерите, то посмотрите на >>>> HTML::FormHandlerX::Field::JSON . >>>> >>>> Сам я отказался от HFH, из-за его тормознутости на Repeatable полях, и >>>> сделал свой вариант https://github.com/dim0xff/p5-Form-Data-Processor >>>> (но там только валидатор). >>>> А эта штука >>>> https://github.com/dim0xff/p5-Form-Data-Processor-Field-Subforms >>>> позволяет делать то, что вы хотите (типа, в зависимости от поля type >>>> подставлять валидатор под данные, которые находятся в Compound поле >>>> data) >>>> >>>> 2015-06-23 17:48 GMT+03:00 Alex Povolotsky <[email protected]>: >>>>> Велосипед в том, что у кого-то HTML::FormHandler::Field::JSON уже >>>>> написан, просто до CPAN руки не дошли. >>>>> >>>>> Аналогично - с FH-классом для динамических форм с переключателем >>>>> >>>>> Грабли - я вроде бы пока никаких не вижу) но вдруг у меня кочка зрения >>>>> неправильная? >>>>> >>>>> json в реляционной БД - говорят, вполне работает, и пошустрее, чем в >>>>> иных NoSQL. >>>>> >>>>> On 23.06.2015 17:45, Dmitry L. wrote: >>>>>> А в чём велосипед и какие грабли могут быть (я сейчас про сторону >>>>>> перла говорю, а не про хранение json в реляционной бд)? >>>>>> >>>>>> 2015-06-23 17:29 GMT+03:00 Alex Povolotsky <[email protected]>: >>>>>>> Добрый вечер >>>>>>> >>>>>>> Есть задача (вполне классическая) - хранить базу клиентов. Система >>>>>>> пишется на Mojolicious. >>>>>>> >>>>>>> Клиенты, естественно, бывают юридическими и физическими лицами. >>>>>>> >>>>>>> Возникла идея - пользуясь возможностями JSON в новом постгресе, хранить >>>>>>> в базе внутренний номер клиента, тип и все остальные данные в JSON, по >>>>>>> которому, при необходимости, и искать. >>>>>>> >>>>>>> Очевидная следующая идея - сделать компаунд-поле типа JSON, которое >>>>>>> будет свертывать сериализатором все поля, при необходимости валидируя >>>>>>> их, и динамическую форму с использованием HTML::FormHandler и >>>>>>> обобщенного механизма создания "полей с JSON". Как мне кажется, штука >>>>>>> может получиться неплохо повторно используемая. >>>>>>> >>>>>>> Делал ли кто-нибудь что-нибудь подобное? Возможно, я изобретаю велосипед >>>>>>> или, наоборот, собираюсь гулять по полю самозарядных граблей? >>>>>>> >>>>>>> Alex >>>>>>> -- >>>>>>> Moscow.pm mailing list >>>>>>> [email protected] | http://moscow.pm.org >>>>>> >>>>>> >>>>>> >>>>> -- >>>>> Moscow.pm mailing list >>>>> [email protected] | http://moscow.pm.org >>>> >>>> >>>> >>> -- >>> Moscow.pm mailing list >>> [email protected] | http://moscow.pm.org >> >> >> > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org -- //wbr, Dmitry L. -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
