Is this safe?

I was surprised to see this redirect worked:

FYI Project has_many Tasks, and Task belongs_to Project

Task controller

def destroy
@task = Task.find(params[:id])
@task.destroy
flash[:notice] = “Successfully destroyed task.”
redirect_to @task.project
end

I assume that clean up doesn’t happen until after destroy. Seems that
‘project’ should be cached before @task.destroy or is it actually safe
to use this way? I’d think this might be one of those places where
production might behave differently from development and test.

Rails 3.0.0.beta4
Ruby 1.8.7

On Jul 23, 2010, at 8:28 AM, Dee wrote:

redirect_to @task.project
end

I assume that clean up doesn’t happen until after destroy. Seems that
‘project’ should be cached before @task.destroy or is it actually safe
to use this way? I’d think this might be one of those places where
production might behave differently from development and test.

Well, this is fine as long as you don’t have the :dependent => :destroy
option set on the task/project relationship.

You can destroy an object and still have access to it. You just can’t
modify it, etc… it’s gone from the DB, but you’re “@task” object is
still an object.

If you call @task.frozen? it will return true which may/may-not be
useful to you.

-philip

Thanks, Philip, for a thorough response. Of course you’re right. I see
your point with the dependent_destroy – but task is the dependent in
the relationship so I think I’m okay.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs