В Rails 5.1, как мне написать метод поиска для has_many, а затем - для принадлежащего? - PullRequest
0 голосов
/ 14 января 2020

Я использую Rails 5.1. У меня есть следующие модели ...

class Member < ApplicationRecord
  has_many :plans, :dependent => :nullify


class Plan < ApplicationRecord
  belongs_to :associate

Я хочу написать запрос поиска, который возвращает все объекты-члены с планом, который имеет "связь" с идентификатором "1", "2", или "3". Как я могу это сделать? Я попытался написать искатель только для нахождения идентификатора "1", но получаю эту ошибку при оценке ...

[8] pry(main)> Member.where(:plans => {:associate => {:id => "1"}}).count
   (0.7ms)  SELECT COUNT(*) FROM "Members" WHERE "associate"."id" IS NULL
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "associate"
LINE 1: SELECT COUNT(*) FROM "members" WHERE "associate"."id" ...
                                              ^
: SELECT COUNT(*) FROM "members" WHERE "associate"."id" IS NULL
from /Users/davea/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `async_exec'

1 Ответ

1 голос
/ 14 января 2020

Сначала необходимо использовать joins для создания запроса INNER JOIN. После этого вы можете получить доступ к таблицам соединения:

Member.joins(plans: :associate).where(associates: { id: 1 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...