以下のように一般用と管理用のscopeを持ったモデルがあります。

class Parent < ActiveRecord::Base
  has_many :children

  # 一般的に使用するスコープ
  default_scope do
    # 論理削除を含まない
    unscoped.where(deleted_at: nil).includes(:children)
  end

  # ActiveAdminなどで使用するスコープ
  def self.admin_scope do 
    # 論理削除を含む
    unscoped.includes(:children) 
  end
end

class Child < ActiveRecord::Base
  belongs_to :parent

  default_scope do
    unscoped.where(deleted_at: nil)
  end

  def self.admin_scope do
    unscoped
  end
end

例えばParentの id = 1 に3つのchildがDB上に記録されているが、1つは論理削除されている場合に、以下のような動きにしたいです。

m1 = Parent.admin_scope.find(1)
m1.children.length # => 3

m2 = Parent.find(1)
m2.children.length # => 2

こうしたコードをうまく書く方法はあるでしょうか?