为了通过查找操作获取我想要的记录顺序,我有点难过。
假设您有三种型号: 1.网站 2.链接 3.投票
网站有很多链接,链接有很多选票。每个投票都有一定数量的点,用户可以将这些点归于该投票。我正在尝试获取一个网站索引页面,其中网站按照他们收到的网站所有链接的总和顺序列出。
这是架构的简化版本
create_table "votes", :force => true do |t|
t.integer "link_id"
t.integer "points"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
end
create_table "links", :force => true do |t|
t.string "name"
t.string "link"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
t.integer "votes_count", :default => 0
t.integer "website_id"
end
create_table "websites", :force => true do |t|
t.string "domain"
t.boolean "verified", :default => false
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end
我正在考虑在这里使用正确的活动记录查询。任何帮助将不胜感激。
答案 0 :(得分:0)
在我发布这个问题一小时后,当我想出解决方案时,我想我花了一天时间把头发拉了出来。
在网站模型中,我将网站has_many :points, through => :links
然后查询:
array = Website.find(:all)
array.sort_by {|w| w.donations.sum('amount')}.reverse
这似乎有效。