我有以下示例:
@ads = Ad.all
我需要按流行度排序,因此它基于两个整数列:contacts_count
和visualizations
。
我想知道是否有以下选项:
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
答案 0 :(得分:1)
根据您的描述,我所需要的不是搜索而是排序。
简短答案:
@ads = Ad.order(:contacts_count, :visualization)
等等,为什么?
首先列出联系人最多的广告
先订购contacts
具有
contacts_count = 0
的记录显示按visualizations
编号排序的记录。
此语句有点不准确,您将使用visualizations
作为决胜局(即使在contacts_count = 0
或等于contacts_count
的情况下也是如此。