我正在使用Rails5。我在 Controller 模型中具有此功能,可以根据条件加载特定模型...
@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])
我的问题是,如何重写以上内容,以便@results数组同时包含“MyObjectTime”和与其链接的任何潜在“UserMyObjectTimeMatch”?
最佳答案
我建议搜索一种替代方法,但是如果您具有has_many'user_my_object_time_matches'设置,则可以利用您提供的信息并避免在注释中提及潜在的10001查询:
@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]}
关于ruby-on-rails - 如何强制Rails查询为每个结果返回两个可能的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358096/