如何检查 Rails 中的关联属性?
How can I check associated attributes in Rails?
我有以下关系
User
has_many Clients
到 ClientMemberships
Client
has_many Projects
Project
belongs_to Client
给定一个特定的用户。为具有特定项目 ID 的用户查找所有客户的最佳方法是什么。
我不想遍历所有项目并使用 ruby 检查每个项目,而不是使用一些 SQL 来完成预加载的工作。
class User
def clients_for_project_id(project_id)
clients.joins(:projects).where(projects: { id: project_id })
end
end
@user.clients.joins(:projects).where("projects.id = ?", your_project_id)
这很简单,使用 joins
在另一个 table 上执行条件,并使用 inculdes
进行预先加载。
user.clients
.joins(:projects)
.includes(:projects)
.where(projects: { id: project_id })
我有以下关系
User
has_many Clients
到 ClientMemberships
Client
has_many Projects
Project
belongs_to Client
给定一个特定的用户。为具有特定项目 ID 的用户查找所有客户的最佳方法是什么。
我不想遍历所有项目并使用 ruby 检查每个项目,而不是使用一些 SQL 来完成预加载的工作。
class User
def clients_for_project_id(project_id)
clients.joins(:projects).where(projects: { id: project_id })
end
end
@user.clients.joins(:projects).where("projects.id = ?", your_project_id)
这很简单,使用 joins
在另一个 table 上执行条件,并使用 inculdes
进行预先加载。
user.clients
.joins(:projects)
.includes(:projects)
.where(projects: { id: project_id })