我现在正在看一些代码:
User.includes([:profile => :schedule]).where('...')
这将加载所有配置文件及其日程表。因此,由此产生的查询是select * user fields,select * profile fields,select * schedule fields
我根据个人资料中的一个字段并基于个人资料计划中的一个字段过滤掉用户,但上面的语句正在选择所有这些字段中的所有字段。
所以我尝试用连接来做:
User.joins(:profile).joins('profiles.schedule').where('....').select('....')
这是抛出错误。我是一名前Java开发人员,仍在学习rails的东西。
答案 0 :(得分:1)
这应该有效:
User.joins(profile: :schedule).where('....').select('....')
答案 1 :(得分:0)
试试这个:
User.joins(profile: [:schedule]).where('...')
或
User.joins(profile: :schedule).where('...')
答案 2 :(得分:0)
如果您已使用has_many through关联设置Profile
模型以建立关联Schedule
,那么您可以使用此功能:
User.joins(:schedule).where('...')