[Catalyst] Constants that refer to rows in a lookup table.
Bill Moseley
moseley at hank.org
Wed May 23 00:14:04 GMT 2007
This is suppose to be an ORM-neutral question.
I often use lookup tables in the database, even for things like, say,
cart_status:
create table cart_status (
id SERIAL PRIMARY KEY,
name text NOT NULL,
active boolean NOT NULL DEFAULT TRUE
);
-- trust the sequence, Luke
insert into cart_status (name) values ('Pending');
insert into cart_status (name) values ('Completed');
Then things like this are nice:
[% cart.cart_status.name %]
And can do this:
update cart_status set name = 'Finished' where name = 'Completed';
And add new lookup options:
insert into cart_status (name) values ('Orphaned');
but this is not so nice:
$cart_class->search( cart_status => 1 );
So, what have you found that works nicely?
use MyApp::Const qw/ cart_pending /; # potentially long list
cart_status => cart_pending # runtime checking
use MyApp::Const qw/ :cart /; # Shorter list :)
cart_status => MyApp::CONST::pending, # global constants
# Make it very clear where a constant should be used
# by adding the constants as methods to the cart namespace
cart_status => $cart_class->pending_status
--
Bill Moseley
moseley at hank.org
More information about the Catalyst
mailing list