为什么没有简单的方法可以解决rails(mongoid)中的关联问题?

时间:2015-05-19 10:32:59

标签: ruby-on-rails ruby-on-rails-4 mongoid has-and-belongs-to-many soft-delete

我试图谷歌并阅读它,但我找不到一个简单的解决方案或关于这个主题的非常好的答案。有许多类似的问题,解决人们的问题。我无法弄清楚如何解决我的问题,最重要的是我仍然想知道为什么还没有人解决这个问题。我认为这是一个常见的问题。

我正在使用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* }

1 个答案:

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