当match列离两张桌子不远时,如何查找记录?

时间:2018-09-20 09:43:58

标签: ruby-on-rails

我有一个TNSNAMES.ORA模型,该模型通过InstanceUser属于User模型。

user_id有多个User

User::Email每个都有一个电子邮件属性。

给出一个电子邮件地址,如何找到User::Email(如果有),以便InstanceUser包含带有该电子邮件地址的instance_user.user.emails

2 个答案:

答案 0 :(得分:0)

User.joins(:instance_users, :emails).exists?(
    user_emails: {email: @email}, 
    instance_users: {instance: @current_instance }
)

这似乎可行

答案 1 :(得分:0)

如果您将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)