2012-12-03 28 views
1

我在名爲records的表中有一個名爲school_id的列。從Ruby on Rails中的數組中刪除具有列值的記錄

現在我有一個school_ids的數組,我想刪除所有具有屬於該數組的id的記錄。

問題是,有沒有辦法只用一行命令呢? Like:

Record.delete_all(:school_id => [1,2,3,4])?

現在我正在做一個循環,儘可能我試圖簡化這一部分。 TIA

回答

2

你可以用你的方式。我希望你使用Rails 3.x的

Record.delete_all(:school_id => [1, 2, 3, 4]) 

它生成SQL

DELETE FROM "records" WHERE "records"."school_id" IN (1, 2, 3, 4) 
+0

其實我忘了提,它是在Rails的2.X – ajib

+0

沒問題。它也適用於Rails 2.3.x – shivashankar

0

我不知道太多關於軌道,但你可以在SQL很容易地做到這一點:

delete from records where school_id in (1,2,3,4)

希望幫助?

1

檢查了這一點destroy_all

它需要一個字符串,數組或ID的哈希刪除。

我常添加其他動作控制器的destroy_multiple

def destroy_multiple 
    current_user.entries.destroy_all(:id => params[:user_ids]) 
    redirect_to entries_url 
end 

不要忘記添加回收路徑..

0
School.where('id IN (?)', school_ids).destroy_all