表结构:
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。
来源: