У меня есть модель InstanceUser, которая принадлежит модели User через user_id.

User имеет несколько User::Email.

Каждый User::Email имеет свойство электронной почты.

Учитывая адрес электронной почты, как мне найти InstanceUser, если он есть, такой, что instance_user.user.emails будет содержать User::Email с этим адресом электронной почты?

0
Dexter Leng 20 Сен 2018 в 12:43

2 ответа

Лучший ответ

Если вы добавите has_many through в UserInstance:

class UserInstance < ApplicationRecord
  has_many :emails, through: :user, class_name: 'User::Email'
  belongs_to :user
  ...
end


Затем вы можете запросить UserInstance, используя следующий запрос:

UserInstance.includes(:emails).where('emails.email = ?', email)
0
Ben Toogood 20 Сен 2018 в 10:28
User.joins(:instance_users, :emails).exists?(
    user_emails: {email: @email}, 
    instance_users: {instance: @current_instance }
)

Это похоже на работу

0
Dexter Leng 20 Сен 2018 в 10:15