从Activerecord对象中删除索引而不是从数据库中删除

时间:2012-08-01 18:50:34

标签: ruby-on-rails activerecord

我必须从数据库中获取记录,经过一些验证后,如果自定义验证失败,我必须从对象中删除记录。

@posts = Post.all

在做了一些业务逻辑验证后,我不想只在@posts对象中保留id为1的帖子如何从@posts对象中删除该帖子,而不是从数据库中删除。

2 个答案:

答案 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