首页 > 解决方案 > Rails:belongs_to 忽略范围

问题描述

表结构:

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产生零。调用Foo.find(1).bar_working产生关联的对象。为什么调用belongs_to关联时没有执行范围?

这在 has_many 关联上工作得很好,只是不能让它在 belongs_to 上工作。

我正在运行 Rails 5.2.2。

资料来源:

标签: ruby-on-railsmodel

解决方案


推荐阅读