2012-08-01 77 views
2

我必須從數據庫中提取記錄,並且在一些驗證之後,如果自定義驗證失敗,我必須從對象中刪除記錄。從Activerecord對象中刪除索引不是從數據庫

@posts = Post.all

做一些業務邏輯驗證後,我不想只在@posts保持後ID爲1對象我如何刪除此帖來自@posts對象只不來自數據庫。

+0

爲什麼你不只忽略ID爲1的帖子? – Dougui 2012-08-01 19:01:36

+0

,因爲我不確定業務邏輯驗證哪裏會失敗。任何我如何找出答案我們可以刪除,如下所示:@posts = Posts.all並刪除索引0與以下@ posts.delete_at(0) – Baran 2012-08-01 19:05:52

+0

您的代碼似乎很奇怪。我不確定你用更好的方法。 – Dougui 2012-08-01 19:10:04

回答

2

您可以使用select方法:

@posts.select do |post| 
    post.id == 1 
    #or any custom validation that returns true in case you want to keep the record 
end 
3

如果你想只從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的問題:)

相關問題