Отключить область по умолчанию для ассоциаций в модуле / 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. Я не хочу использовать какой-либо драгоценный камень


person Tasawar Hussain    schedule 05.03.2019    source источник


Ответы (1)


Во-первых, вы можете напрямую получить константу класса:

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

Затем вы можете напрямую вызвать unscoped в классе:

parent_class.unscoped do 
  # do the unscoped stuff here
end
person infused    schedule 05.03.2019
comment
неопределенный метод `klass' для :list:Symbol - person Tasawar Hussain; 06.03.2019