首页 > 解决方案 > 在当前活动记录/ sql 查询上使用连接、顺序、不同进行优化

问题描述

我目前在 rails 4 和 postgres 上使用 ruby​​,并按照下面的代码进行区分和排序。

我只是有一种感觉是不对的而且没有优化,因为它似乎是用一个数组来做这一切的。

我怎样才能将这一切组合成一个 activerecords 查询?

ads1 = Advertisement.where(property_id: nil)
                    .where(target_address_city: [property.address_city, ""], 
                           target_address_state: [property.address_state, ""], 
                           target_address_country_id: property.address_country_id)              
# return advertisement belongs to the property
ads2 = management.property.advertisements
#combine both results
combine_ads = ads1 + ads2
#remove ads duplicate
uniq_ads = combine_ads.uniq { |ads| ads.id}
# sort by created_at desc
uniq_ads = uniq_ads.sort_by { |ads| -ads[:id]}
# do pagination
final_ads = uniq_ads.paginate(:page => params[:page], :per_page => params[:page_limit])

标签: ruby-on-railsrubyjoinactiverecord

解决方案


推荐阅读