我有几个型号:
Workspace
User
Asset
WorkspaceUser
WorkspaceAsset
Workspace通过两个连接表(WorkspaceUser,WorkspaceAsset)拥有许多用户和资产
我正在尝试找到最有效和最优雅的方法来确定用户和资产之间是否存在路径,即用户 - > WorkspaceUser - >工作区 - > WorkspaceAsset - >资产
这是我到目前为止所做的:
Workspace.joins(:workspace_assets, :workspace_users).where("workspace_assets.asset_id = ? & workspace_users.user_id = ?", assetID, userID)
希望有一个更好的解决方案,也许是一个可以归还相关资产的解决方案。
答案 0 :(得分:1)
你试过了吗?
Asset.joins(:workspace_assets => {:workspace => :workspace_users}.
where("assets.id = ? & workspace_users.user_id = ?", assetID, userID)