我有一个Person模型,他拥有多个角色,而角色又属于一个应用程序。我想查询一个人对给定应用程序的所有角色。到目前为止我已经:
p = Person.includes(:roles => [:application]).where(:loginid => 'their_loginid', :roles => {:application_id => 1})
哪个有效,但它是基于Person.roles.application_id的查询;相反,我想基于Person.roles.application.api_key(应用程序的另一个属性)进行查询。
我试过了:
p = Person.includes(:roles => [:application]).where(:loginid => 'their_loginid', :roles => {:application => {:api_key => 'the_api_key'}})
但我收到错误:
no such column: application.api_key
让我认为我对ActiveRecord的使用没有正确地连接表。
有什么想法吗?
答案 0 :(得分:1)
试试这个:
p = Person.includes(:roles => [:application]).where(:loginid => 'their_loginid', :role_id => Application.find_by_api_key('api_key').role_ids)
答案 1 :(得分:0)
试试这个
p = Person.joins.includes(:roles => [:application]).where(:loginid => 'their_loginid', :roles => {:application => {:api_key => 'the_api_key'}})
就我而言,它已经开始了。