use strict; use warnings; package Doxory::Model::Choice; use Jifty::DBI::Schema; use Doxory::Record schema { column name => label is _('I need help deciding...'), render as 'textarea'; column a => label is _('On the one hand'), render as 'textarea', is mandatory; column b => label is _('On the other hand'), render as 'textarea', is mandatory; column asked_by => label is _('Asked by'), default is defer { Jifty->web->current_user->id }, references Doxory::Model::User; }; use Regexp::Common 'profanity_us'; sub validate_name { my ($self, $name) = @_; if ($name =~ /$RE{profanity}/i) { return (0, 'Would you speak like that in front of your mother? *cough*'); } return 1; } sub canonicalize_name { my ($self, $name) = @_; $name =~ s/$RE{profanity}/**expletives**/gi; return $name; } sub in_favor_of_a { my $self = shift; $self->in_favor_of('a'); } sub in_favor_of_b { my $self = shift; $self->in_favor_of('b'); } sub in_favor_of { my $self = shift; my $suggestion = shift; my $votes = Doxory::Model::VoteCollection->new(); Carp::cluck unless ($self->id); $votes->limit(column => 'choice', value => $self->id); $votes->limit(column => 'suggestion' => value => $suggestion); return $votes; } 1;