Как использовать область действия в RoR с функцией «Куда» и коллекцией в массиве (вложенная ассоциация из 2 уровней)? - PullRequest
0 голосов
/ 23 апреля 2019

Новое в RoR (7 месяцев), я пытаюсь определить вложенную связь.Я могу прицелиться 3 на 4 из моих областей, но не могу понять, как функция where работает с последней, отображая массив.

У меня есть users, кому интересно работать в некоторых departements.Эти отделы отображаются в массиве.У меня есть некоторые companies, которые находятся в некоторых departements и предлагают некоторые opportunities.

Наконец, я хочу создать match между user.departements и opportunity.company.departement, когда departements встретились.

Я прочитал документацию, много постов на StackOverFlow и перепробовал много строк кода.Кажется, мне нужно использовать where с joins, я также пытался использовать distinct ... но не могу понять, как охватить эту информацию:

opportunity.company.departement рендерит объект.user.departements выполняет рендеринг массива.

Например, я попробовал это решение: Вложенные ассоциации Rails и области действия

Я также попробовал:

scope :departements_in, -> (departements) { where(departements: departements).distinct }
  scope :departements_in, -> (departements) { where('user.department_ids @> ARRAY[?]::integer[]') }
  scope :departements_in, -> (departements) { joins(:departements).where(departements: departements).distinct }
  scope :departements_in, -> { where(departement_id: departement_ids) }
  scope :departements_in, -> (departements) { where("departements @> ?", '{departements}')}
  scope :departements_in, ->(departement) { where('users.departement_ids && array[?]', departement) }
  scope :departements_in, -> (departements) { where(departements: User.departements.distinct) }

Как мне определить массив с помощью функции where?Я вызываю метод after_create an opportunity

user.rb

  has_many :expected_departements, inverse_of: :user, dependent: :destroy
  has_many :departements, through: :expected_departements

chance.rb

belongs_to :company, optional: true, dependent: :destroy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...