SPOPS::Tool::CreateOnly - Make a particular object create-only -- it cannot be updated
# Load information with create-only rule my $spops = { class => 'This::Class', isa => [ 'SPOPS::DBI' ], field => [ 'email', 'language', 'country' ], id_field => 'email', base_table => 'test_table', rules_from => [ 'SPOPS::Tool::CreateOnly' ], }; SPOPS::Initialize->process({ config => { test => $spops } }); # Fetch an object and try to modify it... my $object = This::Class->fetch( 'prez@whitehouse.gov' ); $object->{country} = "Time/Warnerland"; # Trying to save the object throws an error: # "Objects in [This::Class] can only be inserted, not updated. No changes made" eval { $object->save }; if ( $@ ) { print $@ } # Instantiate a new object and try to save it... my $new_object = This::Class->new({ email => 'foo@bar.com', language => 'lv', country => 'Freedonia' }); eval { $new_object->save() }; # ...works as normal, object is saved. Hooray!
This is a simple rule to ensure that calls to save() on an already-saved object do nothing. Calling save() on a new (unsaved) object works as normal. Thus, you have create-only objects.
save()
behavior_factory()
Installs the behavior during the class generation process.
generate_persistence_methods()
Generates a save() method that issues a warning and a no-op when called on a saved object.
None known.
Nothing known.
SPOPS::Manual::ObjectRules
SPOPS::ClassFactory
Copyright (c) 2001-2004 intes.net, inc.. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Chris Winters <chris@cwinters.com>
To install SPOPS, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SPOPS
CPAN shell
perl -MCPAN -e shell install SPOPS
For more information on module installation, please visit the detailed CPAN module installation guide.