Отключить область по умолчанию для ассоциаций в модуле / Концерне - PullRequest
0 голосов
/ 05 марта 2019

У меня есть проблема, когда я хочу иметь ассоциацию без границ, но не могу ее получить.В одном из моих методов экземпляра у меня есть такая логика: Предположим, я хочу использовать только одного родителя (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 ассоциации, но она также не работает.

Жду помощи.

PS Я не хочу использовать любой драгоценный камень

1 Ответ

0 голосов
/ 05 марта 2019

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

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

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

parent_class.unscoped do 
  # do the unscoped stuff here
end
...