我正在开发一个项目,我有一个用户,一个用户有一个UserSetting。我想让User.user_setting.status =='active'的用户。我现在有:
User.joins(:user_setting).where(:user_setting => {:status => 'active'})
但它似乎不起作用,我收到错误
Unknown column 'user_setting.status' in 'where clause'
如果有人能帮助我解决我出错的地方,我将不胜感激。
答案 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