Forum: Ruby on Rails Delete All action

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C4cd024191ff30fb901592e63d9ef820?d=identicon&s=25 DAZ (Guest)
on 2008-12-19 18:21
(Received via mailing list)
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 }

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

cheers,

DAZ
B14575f0ca69f10938fdd67e7156e0e1?d=identicon&s=25 Craig Demyanovich (Guest)
on 2008-12-19 18:34
(Received via mailing list)
On Fri, Dec 19, 2008 at 12:20 PM, DAZ <daz4126@gmail.com> 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
C4cd024191ff30fb901592e63d9ef820?d=identicon&s=25 DAZ (Guest)
on 2008-12-21 20:46
(Received via mailing list)
cheers Craig, those instructions were really clear and worked
perfectly.

Thanks again,

DAZ

On Dec 19, 5:33 pm, "Craig Demyanovich" <cdemyanov...@gmail.com>
C4cd024191ff30fb901592e63d9ef820?d=identicon&s=25 DAZ (Guest)
on 2008-12-30 12:19
(Received via mailing list)
I'd now like to take this a step further and allow users to select
which tasks they want to delete (using check boxes probably) then
select 'delete all checked tasks'. Does anybody have any pointers on
how to go about this and how the form would look? I'm guessing that I
would need to create a @selected_tasks array somehow from what was
submitted and then call delete_all on that?

cheers,

DAZ
This topic is locked and can not be replied to.