所以我正在使用 rails3_acts_as_paranoid gem,并且在使用 has_many 控制范围时遇到了一些问题:通过关联。
例如
# User.rb
acts_as_paranoid
has_many :folders
has_many :files, :through => :folders
-
# Folder.rb
acts_as_paranoid
belongs_to :user
has_many :files, :dependent => :destroy
-
# File.rb
acts_as_paranoid
belongs_to :files
现在让我们在 users_controller.rb 中的某处说我想查询属于用户的所有文件,无论它们是否被删除,和/或属于已删除的文件夹。所以很自然我会假设做如下的事情
current_user.files.with_deleted
with_deleted
方法是否可以删除files.deleted_at IS NULL
...但是...它不会删除在幕后使用的文件夹的 default_scope。所以我们仍然有一个folders.deleted_at IS NULL
条件,阻止我检索属于那些已删除_at 不为空的文件夹的文件。
我想继续使用acts_as_paranoid,因为它在我的应用程序的所有其他地方都非常有用,并且我尽量不做手动过滤和弹出.where_values
数组元素之类的事情。但我不太了解处理复杂的范围或可用的方法。