所以我3.2的代碼看起來像這樣的Rails 4.1的升級,具有組麻煩
AssocGenre.includes(:genre).where(attachable_type: Project).count(group: 'genres.name').sort_by{|k,v| -v}.each do
但現在它給我這個錯誤
undefined method `sort_by' for 193:Fixnum
,這是什麼在軌4.1,正確的語法?
所以我3.2的代碼看起來像這樣的Rails 4.1的升級,具有組麻煩
AssocGenre.includes(:genre).where(attachable_type: Project).count(group: 'genres.name').sort_by{|k,v| -v}.each do
但現在它給我這個錯誤
undefined method `sort_by' for 193:Fixnum
,這是什麼在軌4.1,正確的語法?
你以前可以調用count
但不是當了指定GROUP BY子句。現在您必須使用單獨的group
呼叫來指定GROUP BY。從fine manual:
計數(列=零,選項= {})
對記錄進行計數。
[...]
如果count
使用與group
,它返回一個Hash,它的鍵代表集合列,和值是各自的金額:Person.group(:city).count # => { 'Rome' => 5, 'Paris' => 3 }
你可能想包括簡單的INNER JOIN在SQL中而不是所有額外的東西includes
增加所以joins
應該更好地工作。
所以,你要這樣說寫信:
AssocGenre.joins(:genre)
.where(attachable_type: Project)
.group('genres.name')
.count
.sort_by ...
工作很好,但我不得不改變包括加入。 – TuxedoTomson 2014-09-24 16:49:28
對不起,我根本沒有注意到'includes'。 – 2014-09-24 17:08:15
只是有一個嘗試:
AssocGenre.includes(:genre).where(attachable_type: Project).count(group:'genres.name').**to_a**.sort_by{|k,v| -v}.each.....
這不起作用,'count'不需要在Rails4中提供GROUP BY子句的':group'選項。 – 2014-09-21 01:54:52
什麼是你想排序/算? – Anthony 2014-09-19 01:16:57
偶然有193個匹配您的查詢嗎? – 2014-09-19 04:07:37