如何使用嵌套属性查找模型

How to find a model using a nested attribute

我有一个具有嵌套属性的用户模型。

其中一个嵌套属性是电子邮件。

是否可以使用在嵌套属性中找到的电子邮件地址来查找用户模型?

User.find_by(email: "email@example.com") 类似,但查看嵌套电子邮件属性而不是直接查看顶级用户模型。

提前致谢!

因此,如果您将电子邮件作为嵌套属性,则意味着用户与电子邮件之间存在 has_one 或 has_many 关系

相反的是belongs_to。例如

belongs_to :user

在您的电子邮件中 ​​class。有了它,你可以简单地做:

Email.find_by(email: 'boris@test.com').user

鉴于 用户 has_many :emails电子邮件 table 有地址列

你可以使用includes做你想做的事

User.includes(:emails).where(emails: { address: 'boris@test.com' })