2013-06-05 22 views

回答

1
City.group_by(&:name) 

上面的語句將給你散列數組,其中key將是city_name,值將是城市記錄數組。

city_count = {} 
City.group_by(&:name).each do |city_name, city_records| 
    city_count[city_name] = city_records.count 
end 

然後,如果你只需要爲所有的城市每個城市的記錄陣列的數量,那麼你可以通過使用他們的名字一起創建一個新的變量和存儲記錄的計數做上面的代碼將返回包含鍵爲city_name的哈希數組和作爲值的記錄數。

2

在市數名模型添加範圍。

scope :by_name, lambda { |name| where(name: name) }

當你調用計數的範圍

City.by_name('London').count

以下MySQL將被執行...

SELECT count(*) FROM城市WHERE城市.= 'London'

+0

City.group_by(&:name).count這一個我問,我有一個疑問查爾斯是什麼使用這個(&:) – sudhakar

+0

'(&:name)'是調用'each {| x | x.name}' – CharlesJHardy