2

我有一个模型,它有一个名为 的字段deleted,用于标记那些已删除的项目。

所以通常我只想查询那些有deleted = false项目的人,并在某些特殊情况下列出那些已删除的项目以进行恢复。

有可能这样做吗?我现在能做的就是使用一个命名范围:conditions => {:deleted => false}

有没有更好的方法可以让当我这样做时Item.other_named_scope,我可以找到所有那些未删除的项目?

4

1 回答 1

4

您可以为此使用 default_scope。

class Post
  default_scope :conditions => {:deleted => false}
end

现在对模型的所有查询Post都将在ACTIVE帖子上。当您想覆盖此行为时,请使用with_exclusive_scope

Post.with_exclusive_scope{ find_all_by_deleted(true) } #returns deleted records

参考:

链接 1

警告

default_scope 影响每个查找器调用。应谨慎使用,并充分意识到不需要的副作用。

于 2010-08-31T04:39:32.743 回答