On Fri, Dec 19, 2008 at 12:20 PM, DAZ <[email protected]> wrote:

>
> Hi,
>
> What is the best way to delete all members of a model?
>
> For example I have a tasks model and want to put a link in that will
> delete all tasks at once. Something like,
>
> @tasks = Task.all
> @tasks.each { |task| task.destroy }


If you need to allow callbacks to run or dependent associations to also be
destroyed, you can use Task.destroy_all. If you don't need those things,
Task.delete_all will be much faster.


> Do I need another action for this, and what should the link to it be?


You could add another route. For example,

map.resources :tasks, :collection => { :destroy_all => :delete }

In TasksController, you'd add something like

def destroy_all
  Task.destroy_all
  # redirect, render some RJS, etc.
end

In a view, you could

link_to "Delete all", destroy_all_tasks_path

You might want to put a confirmation on the link_to.

Regards,
Craig

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to