fla*_*oke 6 join ruby-on-rails
我有这样的关系:
class Action < ApplicationRecord
has_many :actions_users
Run Code Online (Sandbox Code Playgroud)
我尝试进行如下查询:
select *
from actions left outer join actions_users
on actions_users.action_id = actions.id and actions_users.user_id = 1
where actions.user_id = 1
Run Code Online (Sandbox Code Playgroud)
同时,根据我的经验,在我尝试过的所有结果中,
select *
from actions left outer join actions_users
on actions_users.action_id = actions.id
where actions.user_id = 1 and actions_users.user_id = 1
Run Code Online (Sandbox Code Playgroud)
连接条件代码和一般条件已where生效。
我怎样才能解决它?
Joh*_*ker -3
因为你的条件一般where,所以可以使用includes。这将生成一个LEFT OUTER JOIN查询:
Action.includes(:actions_users).where(actions_users: { user_id: true })Run Code Online (Sandbox Code Playgroud)
或者如果您正在使用Rails 5+,Active Record 提供了一个查找方法left_outer_joins:
Action.left_outer_joins(:actions_users).where(actions_users: { user_id: true })Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8253 次 |
| 最近记录: |