我在名爲records的表中有一個名爲school_id的列。從Ruby on Rails中的數組中刪除具有列值的記錄
現在我有一個school_ids的數組,我想刪除所有具有屬於該數組的id的記錄。
問題是,有沒有辦法只用一行命令呢? Like:
Record.delete_all(:school_id => [1,2,3,4])?
現在我正在做一個循環,儘可能我試圖簡化這一部分。 TIA
我在名爲records的表中有一個名爲school_id的列。從Ruby on Rails中的數組中刪除具有列值的記錄
現在我有一個school_ids的數組,我想刪除所有具有屬於該數組的id的記錄。
問題是,有沒有辦法只用一行命令呢? Like:
Record.delete_all(:school_id => [1,2,3,4])?
現在我正在做一個循環,儘可能我試圖簡化這一部分。 TIA
你可以用你的方式。我希望你使用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)
我不知道太多關於軌道,但你可以在SQL很容易地做到這一點:
delete from records where school_id in (1,2,3,4)
希望幫助?
檢查了這一點destroy_all
它需要一個字符串,數組或ID的哈希刪除。
我常添加其他動作控制器的destroy_multiple
def destroy_multiple
current_user.entries.destroy_all(:id => params[:user_ids])
redirect_to entries_url
end
不要忘記添加回收路徑..
School.where('id IN (?)', school_ids).destroy_all
其實我忘了提,它是在Rails的2.X – ajib
沒問題。它也適用於Rails 2.3.x – shivashankar