Re: best stategry: check before create
[prev]
[thread]
[next]
[Date index for 2005/03/18]
Jim Mozley wrote:
> Ofer Nave wrote:
>
>> One more question:
>>
>> If the 'find_or_create' always returns an object, how can I tell if
>> it was found or created?
>
>
> One suggestion is to override the create method in the base class. I
> asked this question previously and Tony Bowden replied with a
> suggestion below:
>
> On Mon, Jan 26, 2004 at 01:58:30PM +0000, Jim wrote:
> > I was looking at using find_or_create and wanted to do different
> actions
> > depending upon whether the data was found or was created.
>
> At the minute there's no supported way I can think of for that.
>
> The easiest thing I can think of is for you to override create(), either
> in the single class or back up in your application parent class, to
> store the information into the object that it's the result of a
> creation:
>
>
> sub create() {
> my ($class, @args) = @_;
> my $self = $class->SUPER::create(@args);
> $self->{was_created} = 1;
> return $self;
> }
>
> (Or perhaps use a TEMP column for this)
>
> Tony
Ah.
I appreciate the help, but I think I'm going to try a different
strategy. I think I'll explictly 'search' and then 'create' if the
search yields 0 results. Somehow that feels cleaner.
-ofer