Hi, I've run into a weird problem. I'm trying to set default values in a new row, as described here:
http://search.cpan.org/~blblack/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Cookbook.pod#Setting_default_values_for_a_row The error I'm seeing: apocalypse$ prove -v t/Peeron2/ActivityLog.t t/Peeron2/ActivityLog....ok 1 - Old log test entries not found Can't use string ("Peeron2::Schema::ActivityLog") as a HASH ref while "strict refs" in use at /usr/lib/perl5/site_perl/5.8.5/DBIx/Class/Row.pm line 97. 1..1 # Looks like your test died just after 1. My test: #!/usr/bin/perl -w use Test::More qw/no_plan/; use lib qw#/usr/home/peeron/lib/modules#; use Peeron2::Schema; use strict; my %sample = (itemtype => "other", text => "testing P2S:ActivityLog - $$"); my $rs = Peeron2::Schema->resultset("ActivityLog"); is($rs->search({text => $sample{text}})->count, 0, "Old log test entries not found"); # create with minimal data my $orig = $rs->create({%sample}); ok($orig, "New line was added using defaults"); my $lines = $rs->search({text => $sample{text}}); is($lines->count, 1, "The new line is in the database"); And my class definition: package Peeron2::Schema::ActivityLog; use strict; use warnings; use base 'DBIx::Class'; __PACKAGE__->load_components("PK::Auto", "Core"); __PACKAGE__->table("ActivityLog"); __PACKAGE__->add_columns( "logid", { data_type => "MEDIUMINT", default_value => undef, is_nullable => 0, size => 8, }, "date", { data_type => "DATE", is_nullable => 0, size => 10, }, "unixtime", { data_type => "INT", is_nullable => 0, size => 10 }, "itemtype", { data_type => "ENUM", default_value => "other", is_nullable => 0, size => 8 }, "itemid", { data_type => "VARCHAR", default_value => undef, is_nullable => 1, size => 16, }, "text", { data_type => "VARCHAR", default_value => "", is_nullable => 0, size => 255 }, "url", { data_type => "VARCHAR", default_value => undef, is_nullable => 1, size => 255, }, "userid", { data_type => "SMALLINT", default_value => undef, is_nullable => 1, size => 5, }, ); __PACKAGE__->set_primary_key("logid"); __PACKAGE__->belongs_to(userid => 'Peeron2::Schema::Users'); sub new { my ($self, $attrs) = @_; $attrs->{unixtime} = time if not $attrs->{unixtime} or $attrs->{unixtime} =~ /\D/; $attrs->{date} = sprintf("%04d-%02d-%02d", (localtime)[5]+1900, (localtime)[4]+1, (localtime)[3]) unless $attrs->{date} and $attrs->{date} =~ /^\d\d\d\d-\d\d-\d\d$/; $self->next::method($attrs); return $self; } 1; Any idea what I'm doing wrong? Any additional debug info I can get? If I remove the 'sub new' entry, these tests pass (without the default values, of course). Any suggestions would be greatly appreciated! Thanks. Dan -- Dan Boger [EMAIL PROTECTED] _______________________________________________ List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class Wiki: http://dbix-class.shadowcatsystems.co.uk/ IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ Searchable Archive: http://www.mail-archive.com/dbix-class@lists.rawmode.org/