在DBIx :: Class ResultSource上使用new()方法創建(可能是臨時的)變量時,它似乎沒有使用在DBIC模式中指定的默認值填充屬性(我們已經爲創建表從那個模式)。Perl DBIx :: Class - 使用new()時的默認值?
目前,我們正在爲一個這樣的類(第一種情況,其中,這是一個問題)與
sub new {
my $class = shift;
my $self = $class->next::method(@_);
$self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
return $self;
}
在類創建一個默認值(即,屬性隊列=> DEFAULT_QUEUE_VAL)。然而,從長遠來看,我們有幾個具有各種默認值的DBIC類,並且我們希望避免在所有情況下複製上述邏輯。
有沒有任何CPAN模塊/插件可以做到這一點?我們沒有看到任何在我們(公然粗略)的CPAN搜索中。
編輯:修復了代碼示例中的一些垃圾;事實證明,我從過時的代碼中提取出來了。
值得注意的是,如果您的默認值不是一個簡單的值(例如,它是一個SQL函數調用),此類技術將會中斷。如果可能的話,建議您將行插入數據庫(可能在安全事務中)並查詢列值。只做你所問的是否這種技術不起作用。 – hobbs 2010-07-23 07:50:35