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

时间:2019-03-05 17:04:17

标签: ruby-on-rails activerecord ruby-on-rails-5 model-associations activesupport-concern

我担心要建立无范围的关联,但无法获得关联。在我的一种实例方法中,我有这样的逻辑: 假设我只想使用一个父母(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我不想使用任何宝石

1 个答案:

答案 0 :(得分:0)

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

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

然后您可以直接在课堂上致电unscoped

parent_class.unscoped do 
  # do the unscoped stuff here
end