我正在使用 Rails 3.1.3 和 Ruby 1.9.2 和 MySQL 5.1 进行开发。
我想根据唯一相关模型的数量来订购模型。这是我的代码。
class User < ActiveRecord::Base
has_many :check_ins
.
.
end
class CheckIn < ActiveRecord::Base
belongs_to :user, :counter_cache => true
belongs_to :ski_resort, :counter_cache => true
.
.
end
class SkiResort < ActiveRecord::Base
has_many :check_ins
.
.
end
我想通过签入的滑雪胜地的数量来订购用户模型。
当用户 1 在同一个滑雪场签到 3 次时,计数为 1。
<签入 user_id: 1, ski_resort_id: 1">
<签入 user_id: 1, ski_resort_id: 1">
<签入 user_id: 1, ski_resort_id: 1">
当用户 2 为不同的滑雪场签到 4 次时,计数为 4。
<CheckIn user_id: 2, ski_resort_id: 1">
<CheckIn user_id: 2, ski_resort_id: 2">
<CheckIn user_id: 2, ski_resort_id: 3">
<CheckIn user_id: 2, ski_resort_id: 4">
我在下面写过,但它按签到次数排序。
class User < ActiveRecord::Base
scope :checked_in_ski_resorts_count_ranking, lambda{
{
:joins => {:check_ins => :ski_resort},
:group => 'users.id',
:order => 'COUNT(ski_resorts.id) DESC'
}
}
# => {1 => 3, 2 => 4}
end
我想要的结果是'{2 => 4, 1 => 1}'。
如何将此规则的订单范围添加到用户模型?
问候。