Rails 5 проверяет, существует ли запись в отношениях own_to? - PullRequest
0 голосов
/ 09 марта 2019

У меня есть 3 модели Account, Plan и User (и я не могу изменить структуру модели отношений, но добавить области или методы)

Account 
belongs_to :plan

Plan
belongs_to :user

User
has_may :plans

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

Account.exists? …… .. // здесь моя проблема

Ответы [ 2 ]

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

Вы можете создавать косвенные ассоциации, которые связывают Аккаунта и Пользователя через модель Плана:

class Account < ApplicationRecord
  belongs_to :plan
  has_one :user, through: :plan
end

class Plan < ApplicationRecord
  belongs_to :user
end

class User < ApplicationRecord
  has_may :plans
  has_many :accounts, through: :plans
end

Это позволит вам запросить:

Account.joins(:user)
       .where(users: { id: user_id })
       .exists?

ActiveRecord автоматически обработает соединение через таблицу планов.

См. Руководства по Rails:

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

Я бы присоединился к таблицам базы данных, используя joins, что приводит к INNER JOIN в SQL, а затем добавляется условие для user_id, о котором идет речь:

Account.joins(plan: :user).where(users: { id: user_id }).exists?

Подробнее о joins в направляющих рельсов .

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