我必须从数据库中获取记录,经过一些验证后,如果自定义验证失败,我必须从对象中删除记录。
@posts = Post.all
在做了一些业务逻辑验证后,我不想只在@posts对象中保留id为1的帖子如何从@posts对象中删除该帖子,而不是从数据库中删除。
答案 0 :(得分: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)
这将删除匹配的帖子(仅从数组中删除数据库)
您也可以使用Array#reject,但这会创建一个新数组,所以我采用上述解决方案。
+1问题:)
答案 1 :(得分: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