Новое в 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