我有两个具有 1:N 关系的不同模型。让我们将它们命名为“myobject”和“related”
class Myobject < ActiveRecord::Base
has_many :related
scope :without_related, includes(:related).select{ |o| o.related.size == 0 }
end
class Related < ActiveRecord::Base
end
只要我不创建从 Myobjects 到相关的新分配,定义的范围似乎工作得很好:
- 直接 rails c command "Myobject.includes(:related).select ...(在 Scope 中定义)按预期工作
- 对范围“Myobject.without_related”的调用仍然返回同时已分配的对象
似乎可以通过重新启动 rails 控制台或重新启动 Webrick 来解决此问题。但是我不能总是因为对象之间的关系已经改变而重新启动 web 应用程序;)
有没有办法解决这个问题或以更好的方式编写范围?
PS:我需要这个查询作为范围以将其名称作为 group_method 以 Myobject 模型的形式传递给 grouped_select