Задать вопрос
@IvanN777

Конфликт scope при joine одной таблицы, что делать?

В модели из задач с юзерами есть 2 связи.
belongs_to :initiator, :class_name => 'User', :foreign_key => 'initiator_id'
belongs_to :designer, :class_name => 'User', :foreign_key => 'designer_id'

И два scope
scope :initiator_filter, ->(name){ joins(:initiator).where("users.name LIKE ?", "%#{name}%")  unless name.nil? }
 scope :designer_filter, ->(name){ joins(:designer).where("users.name LIKE ?", "%#{name}%")  unless name.nil? }

При раздельной работе оба они работают.
Вместе возникает конфликт и работает последний.
Это происходит из-за того, что join к одной таблице, но я не знаю как исправить.(
  • Вопрос задан
  • 2218 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Thinknetica
    Профессиональная разработка на Ruby on Rails
    9 месяцев
    Далее
  • Хороший программист
    Интенсив по Ruby on Rails
    5 месяцев
    Далее
  • Thinknetica
    Оптимизация Ruby/Rails-приложений
    9 недель
    Далее
Решения вопроса 1
@vsuhachev
joins('users initiators on initiators.id = initiator_id').where('initiators.name LIKE ...')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@IvanN777 Автор вопроса
Единственное join надо поставить спереди
joins('LEFT JOIN users designers on designers.id = designer_id')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы