我有一个模型,它有一个名为 的字段deleted
,用于标记那些已删除的项目。
所以通常我只想查询那些有deleted = false
项目的人,并在某些特殊情况下列出那些已删除的项目以进行恢复。
有可能这样做吗?我现在能做的就是使用一个命名范围:conditions => {:deleted => false}
有没有更好的方法可以让当我这样做时Item.other_named_scope
,我可以找到所有那些未删除的项目?
我有一个模型,它有一个名为 的字段deleted
,用于标记那些已删除的项目。
所以通常我只想查询那些有deleted = false
项目的人,并在某些特殊情况下列出那些已删除的项目以进行恢复。
有可能这样做吗?我现在能做的就是使用一个命名范围:conditions => {:deleted => false}
有没有更好的方法可以让当我这样做时Item.other_named_scope
,我可以找到所有那些未删除的项目?
您可以为此使用 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
参考:
警告
default_scope 影响每个查找器调用。应谨慎使用,并充分意识到不需要的副作用。