暂时取消模型关联

时间:2016-05-20 17:58:31

标签: ruby-on-rails activerecord

假设您有两个模型:

class Walrus < ActiveRecord::Base

  default_scope { where("destroyed_at IS NULL") }
  has_many :bubbles, dependent: :destroy

end

class Bubble < ActiveRecord::Base

  default_scope { where("destroyed_at IS NULL") }
  belongs_to :walrus

end

现在如果我摧毁海象,它也会破坏它们的气泡(即设置destroyed_atWalrus模型的Bubble。如果我想找到被毁的{{} 1}}记录,我可以这样做:

Walrus

我需要的是一种解除关联的方法。

真实世界的应用程序是一个具有大量关联的模型,通过API返回,因此我无法手动浏览每个关联并取消关联。

1 个答案:

答案 0 :(得分:0)

您应该可以使用嵌套unscoped

Walrus.unscoped do
  Bubble.unscoped do
    frank = Walrus.first
    frank.bubbles.to_a
  end      
end

注意,在Rails 4.2控制台中测试时,我不得不将.to_a添加到关联中,否则unscoped将不会应用它(这可能与打印结果有关) - 关系对象 - 在rails控制台中。)