我必須從數據庫中提取記錄,並且在一些驗證之後,如果自定義驗證失敗,我必須從對象中刪除記錄。從Activerecord對象中刪除索引不是從數據庫
@posts = Post.all
做一些業務邏輯驗證後,我不想只在@posts保持後ID爲1對象我如何刪除此帖來自@posts對象只不來自數據庫。
我必須從數據庫中提取記錄,並且在一些驗證之後,如果自定義驗證失敗,我必須從對象中刪除記錄。從Activerecord對象中刪除索引不是從數據庫
@posts = Post.all
做一些業務邏輯驗證後,我不想只在@posts保持後ID爲1對象我如何刪除此帖來自@posts對象只不來自數據庫。
您可以使用select方法:
@posts.select do |post|
post.id == 1
#or any custom validation that returns true in case you want to keep the record
end
如果你想只從ActiveRecord的結果數組,而不是數據庫中刪除記錄試試這個
#first convert the @post to array
@post.to_a.delete_if{|post| post.id == 1 }
這將刪除後用id = 1(僅來自數據庫而非數據庫)
或
#pass the object to delete
post = @post.first
@post.to_a.delete(post)
這將刪除匹配後(只是從陣列不是從數據庫)
您還可以使用陣列#拒絕,但是讓我與上述解決方案去,將創建一個新的數組。
+1的問題:)
爲什麼你不只忽略ID爲1的帖子? – Dougui 2012-08-01 19:01:36
,因爲我不確定業務邏輯驗證哪裏會失敗。任何我如何找出答案我們可以刪除,如下所示:@posts = Posts.all並刪除索引0與以下@ posts.delete_at(0) – Baran 2012-08-01 19:05:52
您的代碼似乎很奇怪。我不確定你用更好的方法。 – Dougui 2012-08-01 19:10:04