我必须从数据库中获取记录,经过一些验证后,如果自定义验证失败,我必须从对象中删除记录。
@posts = Post.all
在进行了一些业务逻辑验证之后,我不想只在 @posts 对象中保留 id 为 1 的帖子我如何才能从 @posts 对象中删除该帖子,而不是从数据库中删除。
我必须从数据库中获取记录,经过一些验证后,如果自定义验证失败,我必须从对象中删除记录。
@posts = Post.all
在进行了一些业务逻辑验证之后,我不想只在 @posts 对象中保留 id 为 1 的帖子我如何才能从 @posts 对象中删除该帖子,而不是从数据库中删除。
如果您确实想仅从 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的问题:)
您可以使用选择方法:
@posts.select do |post|
post.id == 1
#or any custom validation that returns true in case you want to keep the record
end