NAME
Fey::Meta::HasOne - A parent for has-one metaclasses
DESCRIPTION
This class exists to provide a common parent for the two has-one metaclasses, Fey::Meta::HasOne::ViaFK and Fey::Meta::HasOne::ViaSelect.
CONSTRUCTOR OPTIONS
This class accepts the following constructor options:
handles
This will simply be passed on when an attribute for this has-one relationship is created. Note that this is ignore if
is_cached
is false.allows_undef
A boolean indicating whether or not the relationship's value can be
undef
.is_cached
Defaults to true for this class.
METHODS
This provides the following methods:
$ho->name()
Corresponds to the value passed to the constructor.
$ho->table()
Corresponds to the value passed to the constructor.
$ho->foreign_table()
Corresponds to the value passed to the constructor.
$ho->is_cached()
Corresponds to the value passed to the constructor, or the calculated default.
$ho->allows_undef()
Corresponds to the value passed to the constructor.
$ho->handles()
Corresponds to the value passed to the constructor.
$ho->attach_to_class($class)
This method takes a Fey::Meta::Class::Table object and attaches the relationship to the associated class. If this relationship is cached, it creates a new attribute, otherwise it creates a new method.
The method/attribute returns an object belonging to the class associated with the foreign table. It can return undef
if allows_undef
is true.
$ho->associated_class()
The class associated with this object. This is undefined until $ho->attach_to_class()
is called.
$ho->associated_attribute()
Returns the attribute associated with this object, if any.
$ho->associated_method()
Returns the method associated with this object, if any.
$ho->detach_from_class()
If this object was attached to a class, it removes any attribute or method it made, and unsets the associated_class
.
AUTHOR
Dave Rolsky, <autarch@urth.org>
BUGS
See Fey::ORM for details.
COPYRIGHT & LICENSE
Copyright 2006-2009 Dave Rolsky, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module.