我有以下where where子句......
User.where(location_id: params[:user_place_id]).map(&:open_session)
我想将此转换为Active Record关系,以便我可以在其上调用order and pagination。
看起来我想.arr,但我不确定在这种情况下如何调用它。
以下是用户模型中的关系:
has_many :open_sessions, :class_name => "Session", :foreign_key => "assignee_id", :conditions => "status_state = #{Session::STATUS_SUBMITTED}"
答案 0 :(得分:1)
你不能那样做,因为'ActiveRecord关系'实际上是对SQL查询的抽象。但是,如果可以复制与ActiveRecord查询相同的逻辑,那么您将获得所需的关系:
Session.where(status_state: Session::STATUS_SUBMITTED).joins(:user).where(users: {location_id: params[:user_place_id]})
您可以使用示波器进一步清理它。
答案 1 :(得分:0)
假设:open_session
用于选择您的收藏集,您应该:open_session
作为范围,并直接在where
上调用:
User.where(location_id: params[:user_place_id]).open_session
这将返回AR::Relation
,然后您可以对其进行分页/订购。
如果您发布open_session
的代码,我们可以帮助您清理它。