禁用模块/关注中的关联的默认范围

问题描述 投票:0回答:1

我有一个问题,我希望有无范围的关联,但无法得到它。在我的一个实例方法中,我有一个类似的逻辑:假设我只想使用一个父(belongs_to

parent_class_name = self.class.reflect_on_all_associations(:belongs_to).map(&:name).last

parent = nil
if parent_class_name.present?
   parent_class_const = parent_class_name.to_s.camelize.constantize

    parent_class_const.send(:unscoped) do
      parent = self.send(parent_class_name)
    end
end

父关联始终是默认范围,不应该是大小写。同样,我有has_many协会的逻辑,但这也行不通。

期待着寻求帮助。

P.S我不想使用任何宝石

ruby-on-rails activerecord ruby-on-rails-5 model-associations activesupport-concern
1个回答
0
投票

首先,您可以直接获取类常量:

parent_class = self.class.reflect_on_all_associations(:belongs_to).last.klass

然后你可以直接在课堂上调用unscoped

parent_class.unscoped do 
  # do the unscoped stuff here
end
© www.soinside.com 2019 - 2024. All rights reserved.