Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Catalyst: где правильно писать модель? 
:(
    Опции темы
Logo
Дата 24.1.2011, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Где в Catalyst нужно записывать свои методы для таблиц DBIx::Class, в lib/MyApp/Schema/Result/Table.pm после строк DO NOT MODIFY THIS OR ANYTHING ABOVE!, или в lib/MyApp/Model/ModelName/Table.pm?
PM MAIL   Вверх
Logo
Дата 27.1.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Быть может, есть какие нибудь известные приложения на Catalyst, котоыре можно было бы посмотреть?
PM MAIL   Вверх
xoma
Дата 27.1.2011, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Цитата(Logo @ 27.1.2011,  15:09)
Быть может, есть какие нибудь известные приложения на Catalyst, котоыре можно было бы посмотреть?

 Вот это http://mojomojo.org/ ? https://github.com/marcusramberg/mojomojo - код...
PM MAIL WWW   Вверх
Logo
Дата 28.1.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Посмотрел, там пишется в Shema, и еще как то отключена контрольная сумма, мешающая изменять автоматически сгенерированную часть.
Но тогда зачем Catalyst bless'ит все объекты DBIx::Class::Row в MyApp::Model::MyDB::Table?

И самое главное как тогда поставить триггер на определенное поле, или создать расширеное поле? 
Оба примера из DBIx::Class::Manual::Cookbook не работают.
Код

  around number => sub {
    my ($orig, $self) = (shift, shift);

    if (@_) {
      my $value = $_[0];
      $self->squared( $value * $value );
    }

    $self->next::method(@_);
  }

пишет при обращении к полю No next::method 'around' found for MyApp::Model::MyDB::Object at /usr/share/perl/5.10/mro.pm line 26.

Код

  sub description {
      my $self = shift;

      # If there is an update to the column, we'll let the original accessor
      # deal with it.
      return $self->_description(@_) if @_;

      # Fetch the column value.
      my $description = $self->_description;

      # If there's something in the description field, then just return that.
      return $description if defined $description && length $descripton;

      # Otherwise, generate a description.
      return $self->generate_description;
  }

Просто не работает, без сообщений об ошибках.

PM MAIL   Вверх
vivu
Дата 13.2.2011, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 3.11.2009

Репутация: нет
Всего: нет



Можно и там и там.

В первом случае lib/MyApp/Schema/Result/Table.pm после строк DO NOT MODIFY THIS OR ANYTHING ABOVE! Лучше записывать что-то относящееся непосредственно к таблице. Например: работу с флагами, манипуляции с данными таблицы и пр.

Второй случай имеет смысл использовать, если нужно повесить какую-то жирную логику. Фактически, это уже будет обособленная от основной модели модель.

...надеюсь я понятно объяснил smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0840 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.