Rails的:belongs_to忽略范围

时间:2019-04-09 18:24:41

标签: ruby-on-rails model

表结构:

Bar:
  a_id
  b_id
  attr1
  attr2
  ...

Foo:
  id
  a_id
  b_id
  ...

型号:

class Bar < ApplicationRecord
end

class Foo < ApplicationRecord
  belongs_to :bar, lambda { |foo|
    unscope(:where).where(
      a_id: foo.a_id,
      b_id: foo.b_id
    )
  }

  def bar_working
    Bar.find_by(
      a_id: a_id,
      b_id: b_id
    )
  end
end

调用Foo.find(1).bar会产生nil。调用Foo.find(1).bar_working将产生关联的对象。为什么在我调用belongs_to关联时不执行作用域?

这在has_many关联上工作得很好,只是无法使其在belongs_to上正常工作。

我正在运行Rails 5.2.2。

来源:

0 个答案:

没有答案