根据关联属性获取记录

时间:2017-03-15 13:27:54

标签: ruby-on-rails ruby rails-activerecord

我正在开发一个项目,我有一个用户,一个用户有一个UserSetting。我想让User.user_setting.status =='active'的用户。我现在有:

User.joins(:user_setting).where(:user_setting => {:status => 'active'})

但它似乎不起作用,我收到错误

Unknown column 'user_setting.status' in 'where clause'

如果有人能帮助我解决我出错的地方,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

User.joins(:user_setting).where(user_settings: { status: 'active' })

joins中,您应该使用关联名称,而在where子句中,您应该使用数据库表名(即{ {1}},而非user_settings)。

修改

要在结果集合中不接收重复条目,您可以使用user_setting子句:

GROUP BY

另一种选择是使用User.joins(:user_setting) .where(user_settings: { status: 'active' }) .group('users.id') 代替includes

joins