Дайте мне посмотреть, правильно ли я вас понимаю.
У вас есть четыре атрибута, которым должно быть присвоено значение по умолчанию.
Вы определили это значение по умолчанию в схеме базы данных MySQL. Вы хотели бы, чтобы при каждом создании экземпляра Foo значения по умолчанию заполнялись значениями по умолчанию, определенными вами в схеме MySQL.
Если я правильно понимаю, что вы пытаетесь сделать, то мой совет: Не делайте так (если это не является обязательным требованием для вашего проекта). Определите значения по умолчанию для ваших атрибутов, используя свойства Moose по умолчанию или свойства компоновщика.
has 'bar' => (
default => 'fubar',
);
Если вам нужно искать значения по умолчанию, которые были установлены в схеме базы данных, а не определять их в вашем классе, вы создадите больше работы для себя, добавите ненужную сложность в свою программу и добавите дорогие вызовы базы данных, которые могли бы избегать. Вам нужно будет проанализировать схему базы данных и определить, какие значения по умолчанию должны быть для данного атрибута. Вам нужно будет делать это каждый раз, когда вы создаете новый объект (дорогой), или создавать кэш значений по умолчанию. Конечно, вы можете создать расширение Moose, которое реализует некоторую магию и делает это для вас прозрачно. Похоже, много работы для не очень привлекательного решения. Я бы просто использовал свойство атрибута по умолчанию Moose, если у вас нет действительно веских причин не делать этого.