我试图谷歌并阅读它,但我找不到一个简单的解决方案或关于这个主题的非常好的答案。有许多类似的问题,解决人们的问题。我无法弄清楚如何解决我的问题,最重要的是我仍然想知道为什么还没有人解决这个问题。我认为这是一个常见的问题。
我正在使用Rails 4和Mongoid 4与Mongoid Paranoia。
我想为User
实现软删除。这很有效。
但我有一个Event
模型has_and_belongs_to_many :users, inverse_of: nil
。
当我软删除用户(该用户是该事件的用户)时,我似乎无法找到默认情况下获取此用户的方法。由于具有deleted_at: nil
的用户的默认范围,因此未提取软删除的用户。
有人在那里启发吗?
如何开始实现类似于ActiveRecord提供的功能:
has_and_belongs_to_many :users, -> { *a defined scope* }
答案 0 :(得分:0)
我不确定我是否完全了解你,但不应该使用unscoped
来调用另一个范围来做你需要的事情。 Docs here
default_scope { where(deleted_at: nil) }
scope :some_other_scope, -> { unscoped.where(something_else: true) }
修改
啊,我明白了。不是最优雅的方式,但如果您未设置更改用户模型的default_scope
;也许:
# Event model
def all_users
User.unscoped.where(event: self)
end