如何根据相关权重不同的两个字段对记录进行排序?

时间:2018-07-25 22:56:45

标签: ruby-on-rails

我有以下示例:

@ads = Ad.all 

我需要按流行度排序,因此它基于两个整数列:contacts_countvisualizations

我想知道是否有以下选项:

1)首先列出联系人数量最多的广告,并以contacts_count = 0的记录显示按visualizations编号排序的记录。

2)不知何故,属性在两个字段中占主导地位:5表示联系人,3表示可视化或类似内容,并以此相关性进行排序。

如何使用活动记录或任何搜索宝来做到这一点?

schema.rb

  create_table "ads", force: :cascade do |t|
    t.string   "photo"
    t.text     "description"
    t.string   "category"
    t.integer  "user_id"
    t.integer  "visualizations",                           default: 0
    t.integer  "contacts_count",                           default: 0
    t.index ["user_id"], name: "index_ads_on_user_id", using: :btree
  end

1 个答案:

答案 0 :(得分:1)

根据您的描述,我所需要的不是搜索而是排序。

简短答案:

@ads = Ad.order(:contacts_count, :visualization)

等等,为什么?

  

首先列出联系人最多的广告

先订购contacts

  

具有contacts_count = 0的记录显示按visualizations编号排序的记录。

此语句有点不准确,您将使用visualizations作为决胜局(即使在contacts_count = 0或等于contacts_count的情况下也是如此。