Ruby on Rails |условия в псевдониме таблицы - PullRequest
0 голосов
/ 02 марта 2019

Я новичок в Ruby и Rails, и мне нужна ваша помощь, чтобы найти правильный способ сделать это.

У меня есть следующая схема базы данных:

employees таблица содержит столбцы: id , name
company_infos таблица имеет столбцы: id , _employee_id_, _chief_id_

Модель CompanyInfo имеет следующие ассоциации:

class CompanyInfo < ApplicationRecord    
  belongs_to :employee    
  belongs_to :chief, class_name: 'Employee', :foreign_key => 'chief_id'
end

Я хочу отфильтровать результаты по ключевому слову, используемому для поиска имени сотрудника или руководителя.

Я делаю это, но получаю ошибку

Mysql неизвестный столбец главный.имя

CompanyInfo.eager_load(:employee, :chief)
  .where("employees.name like '%something%'")
  .where("chief.name like '%something%'")

Буду признателен за любую помощь, которую вы можете мне оказать.Спасибо

1 Ответ

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

Только один where запрос будет работать в обоих случаях, так как обе ассоциации имеют одну и ту же таблицу

  1. Если вы хотите отфильтровать CompanyInfo, в которой сотрудник руководителя имеет имя как «что-то»

    CompanyInfo.includes(:employee, :chief).where("employees.name like '%something%'")
    
  2. Если вам нужен запрос, в котором вы хотите отфильтровать CompanyInfo, где «что-то» - это имя как сотрудника, так и руководителя, попробуйте

    CompanyInfo.includes(:employee).where("employees.name like '%something%'")
      .includes(:chief).where("employees.name like '%something%'")
    
...