如何强制Rails查询每个结果可能返回两个模型?

Dav*_*ave 9 search activerecord model ruby-on-rails ruby-on-rails-5

我正在使用Rails 5.我在我的控制器模型中有这个用于加载符合标准的特定模型...

  @results = MyObjectTime.joins(:my_object,
                            "LEFT JOIN user_my_object_time_matches on my_object_times.id = user_my_object_time_matches.my_object_time_id #{additional_left_join_clause}")
                     .where( search_criteria.join(' and '), *search_values )
                     .limit(1000) 
                     .order("my_objects.day DESC, my_objects.name")
                     .paginate(:page => params[:page])
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何重写上面的内容,以便@results数组包含"MyObjectTime"和它链接到的任何潜在的"UserMyObjectTimeMatch"?

s1m*_*pl3 3

我建议寻找替代方案,但根据您提供的信息并希望避免评论中提到的潜在 10001 查询,如果您有 has_many 'user_my_object_time_matches' 设置,您可以执行以下操作:

@results = MyObjectTime.joins(:my_object,
                            "LEFT JOIN user_my_object_time_matches on my_object_times.id = user_my_object_time_matches.my_object_time_id #{additional_left_join_clause}")
        .where( search_criteria.join(' and '), *search_values )
        .limit(1000) 
        .order("my_objects.day DESC, my_objects.name")
        .paginate(:page => params[:page])
        .includes(:user_my_object_time_matches)
        .map{|t| [t, t.user_my_object_time_matches]}
Run Code Online (Sandbox Code Playgroud)