Sql Rails:如何从何处获取模型;join_table.attrbute=x";加入了,但也加入了其他所有人
我有一个模型Sql Rails:如何从何处获取模型;join_table.attrbute=x";加入了,但也加入了其他所有人,sql,ruby-on-rails,ruby,postgresql,activerecord,Sql,Ruby On Rails,Ruby,Postgresql,Activerecord,我有一个模型公司,还有一个加入模型备注,它有用户id和公司id。这家公司有很多钞票。注释属于用户和公司。我试图为一个用户(如果有的话)获取一个公司列表和注释,但也要获取所有其他公司的注释 显然,执行Company.joins(:notes).where(“notes.user_id=1”)只能获取那些有注释的,而不是其他的。我在这里遗漏了什么?Rails 4: Company.joins('LEFT JOIN notes ON companies.id = notes.company_id')
公司
,还有一个加入模型备注
,它有用户id
和公司id
。这家公司有很多钞票。注释属于用户和公司。我试图为一个用户(如果有的话)获取一个公司列表和注释,但也要获取所有其他公司的注释
显然,执行Company.joins(:notes).where(“notes.user_id=1”)
只能获取那些有注释的,而不是其他的。我在这里遗漏了什么?Rails 4:
Company.joins('LEFT JOIN notes ON companies.id = notes.company_id')
:
你需要做一个测试。这将保留表1(公司)中的所有记录,即使它们没有任何东西可以加入表2(注释)
有两种方法可以按用户进行筛选
where(notes: {user_id: [@user.id, nil]})
@user.id
)进行消毒或信任
joins("LEFT JOIN notes ON companies.id = notes.company_id AND notes.user_id = #{@user.id}")
谢谢你的解释。回答得很好。
joins("LEFT JOIN notes ON companies.id = notes.company_id AND notes.user_id = #{@user.id}")