避免在 Rails 中重新加载活动记录关系



Lats说我有一些关系:

@active_posts = Post.where(active: true).limit(3) # returns 3 active posts, but there are much more then 3 

然后我修改了这个关系的一些成员:

@active_posts.first.update active: false
@active_posts.size # returns 3, but need 2 remaining 

我如何在此关系中获得其余 2 个活动帖子?当我尝试遍历@active_posts时,它会从数据库重新加载并用活动帖子替换停用的帖子。但是,我如何才能从此关系中正好保留 2 个活动帖子,在停用第三个帖子后剩余?

使用作用域

class Post < ActiveRecord::Base
scope :actived, -> { where(active: true) }
scope :deactived, -> { where(active: false) }
end
@active_posts = Post.actived # returns 3 active posts
@active_posts.first.update active: false
@active_posts.reload
@active_posts = Post.actived

最新更新