Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

jifty::dbi::column(3pm) [debian man page]

Jifty::DBI::Column(3pm) 				User Contributed Perl Documentation				   Jifty::DBI::Column(3pm)

NAME
Jifty::DBI::Column - Encapsulates a single column in a Jifty::DBI::Record table DESCRIPTION
This class encapsulates a single column in a Jifty::DBI::Record table description. It replaces the _accessible method in Jifty::DBI::Record. It has the following accessors: "name type default validator boolean refers_to readable writable length". new is_numeric Returns true if the column is of some numeric type, otherwise returns false. is_string Returns true if this column is a text field is_boolean Returns true if this column is a boolean serialize_metadata Returns a hash describing this column object with enough detail to fully describe it in the database. Intentionally skips "record_class", all column attributes starting with "_", and all column attributes which are undefined. The "known" attributes in the "attributes" hash are flattened and returned as well. The list of known attributes are: container label hints render_as display_length valid_values available_values autocompleted documentation no_placeholder Setting this to a true value causes "load_by_cols" in Jifty::DBI::record to not use a placeholder when loading the column. This can allow the database to come up with better query plans in some cases. serialize_metadata2 Returns a hash describing this column object with enough detail to fully describe it in the database. Intentionally skips "record_class", all column attributes starting with "_", and all column attributes which are undefined. validator Gets/sets the validator coderef for the column. read DEPRECATED. Use "$column->readable" instead. write DEPRECATED. Use "$column->writable" instead. length DEPRECATED. Use "$column->max_length" instead. until DEPRECATED. Use "$column->till" instead. active Returns the a true value if the column method exists for the current application version. The current application version is determined by checking the "schema_version" in Jifty::DBI::Record of the column's "record_class". This method returns a false value if the column is not yet been added or has been dropped. This method returns a false value under these circumstances: o Both the "since" trait and "schema_version" method are defined and "schema_version" is less than the version set on "since". o Both the "till" trait and "schema_version" method are defined and "schema_version" is greater than or equal to the version set on "till". Otherwise, this method returns true. perl v5.14.2 2012-01-25 Jifty::DBI::Column(3pm)

Check Out this Related Man Page

Jifty::DBI::Record::Plugin(3pm) 			User Contributed Perl Documentation			   Jifty::DBI::Record::Plugin(3pm)

NAME
Jifty::DBI::Record::Plugin - Record model mixins for Jifty::DBI SYNOPSIS
# Define a mixin package MyApp::FavoriteColor; use base qw/ Jifty::DBI::Record::Plugin /; # Define which methods you want to put in the host model our @EXPORT = qw( favorite_complementary_color ); use Jifty::DBI::Schema; use Jifty::DBI::Record schema { column favorite_color => type is 'text', label is 'Favorite Color', valid_values are qw/ red green blue yellow /; }; sub favorite_complementary_color { my $self = shift; # whatever host object thing we've mixed with my $color = $self->favorite_color; return $color eq 'red' ? 'green' : $color eq 'green' ? 'red' : $color eq 'blue' ? 'orange' : $color eq 'yellow' ? 'purple' : undef; } # Use the mixin package MyApp::Model::User; use Jifty::DBI::Schema; use Jifty::DBI::Record schema { column name => type is 'text', label is 'Name'; }; # Mixins use MyApp::FavoriteColor; sub name_and_color { my $self = shift; my $name = $self->name; my $color = $self->favorite_color; return "The favorite color of $name is $color."; } sub name_and_complementary_color { my $self = shift; my $name = $self->name; my $color = $self->favorite_complementary_color; return "The complement of $name's favorite color is $color."; } DESCRIPTION
By using this package you may provide models that are built from one or more mixins. In fact, your whole table could be defined in the mixins without a single column declared within the model class itself. MODEL MIXINS To build a mixin, just create a model that inherits from this package, "Jifty::DBI::Record::Plugin". Then, add the schema definitions you want inherited. package MyApp::FasterSwallow; use base qw/ Jifty::DBI::Record::Plugin /; use Jifty::DBI::Schema; use Jifty::DBI::Record schema { column swallow_type => type is 'text', valid are qw/ african european /, default is 'african'; }; @EXPORT A mixin may define an @EXPORT variable, which works exactly as advertised in Exporter. That is, given the name of any methods or variable names in the mixin, the host model will gain those methods. our @EXPORT = qw( autocomplete_swallow_type ); sub autocomplete_swallow_type { my $self = shift; my $value = quotemeta(shift); # You should probably find a better way than actually doing this... my @values; push @values, 'african' if 'african' =~ /$value/; push @values, 'european' if 'european' =~ /$value/; return @values; } That way if you have any custom methods you want to throw into the host model, just define them in the mixin and add them to the @EXPORT variable. register_triggers Your mixin may also want to register triggers for the records to which it will be added. You can do this by defining a method named "register_triggers": sub register_triggers { my $self = shift; $self->add_trigger( name => 'before_create', callback => &before_create, abortable => 1, ); } sub before_create { # do something... } See Class::Trigger. register_triggers_for_column In addition to the general "register_triggers" method described above, the mixin may also implement a "register_triggers_for_column" method. This is called for each column in the table. This is primarily helpful for registering the "after_set_*" and "before_set_*" columns. For example: sub register_triggers_for_column { my $self = shift; my $column = shift; return unless $column ne 'updated_on'; $self->add_trigger( name => 'after_set_'.$column, callback => &touch_update_time, abortable => 1, ); } sub touch_update_time { my $self = shift; $self->set_updated_on(DateTime->now); } This has the additional advantage of being callable when new columns are added to a table while the application is running. This can happen when using database-backed models in Jifty (which, as of this writing, has not been released or made part of the development trunk of Jifty, but is part of the virtual-models branch). See Class::Trigger. MODELS USING MIXINS To use your model plugin, just use the mixins you want to get columns from. You should still include a schema definition, even if it's empty: package MyApp::Model::User; use Jifty::DBI::Schema; use MyApp::Record schema { }; # Mixins use MyApp::FavoriteColor; use MyApp::FasterSwallow; use Jifty::Plugin::User::Mixin::Model::User; use Jifty::Plugin::Authentication::Password::Mixin::Model::User; SEE ALSO
Jifty::DBI::Record, Class::Trigger LICENSE
Jifty::DBI is Copyright 2005-2007 Best Practical Solutions, LLC. Jifty is distributed under the same terms as Perl itself. perl v5.14.2 2010-09-21 Jifty::DBI::Record::Plugin(3pm)
Man Page