2012-05-01 16 views
1

ローカルマシン(MySQL DBを実行中)でうまく動作するが、Herokuでは1,2,3,4,5 ...の代わりにソート順が間違っている、12,13など私は1,11,12,13,2,3,4,5を得る...!Herokuの並べ替えの問題

<% @release.releases_tracks.sort { |a,b| a.position <=> b.position }.each do |releases_track| %> 
     <tr> 
     <td><%= releases_track.position %></td> 
     <td><%= releases_track.track.name %></td> 
     <td><%= releases_track.track.artists.map { |a| a.name}.join (", ") %></td> 
     <td><%= releases_track.track.isrc %></td> 
     </tr> 
<% end %> 

私は自分の位置列はvarchar型だったからですが、だと思ったが、私は整数に変更した、Herokuの上のDBを移行し、それはまだそれをやっています!どうしたの?

+1

は '.sort_by {ありますtrack.position} 'の代わりに' .sort {| a、b | a.position <=> b.position} '。 [ApiDock](http://apidock.com/ruby/Enumerable/sort_by)によると、Ruby 1.8.6でも 'sort_by'があります。 –

+0

@ RoryO'Kane - あなたの変更はこれを修正しました!ソート順が正しいようになりました。 – Raoot

答えて

2

列がまだvarcharまたはstringのようです。 Herokuのコンソールでテーブルからオブジェクトを読み込み、実際に整数に変更されているかどうか確認するためにフィールドを調べることができますか?

最初は、これはHerokuが使用するmySqlとPostgresの違いに起因する可能性があると思っていましたが、ここではそうは思わないでしょう。 |トラック|また

、あなたはソートを処理するためにはActiveRecordを使用することができます...ちなみに、より簡潔でソートするおそらくより高速な方法として

results = YourModel.where('blah...blah..').order('id desc') 
+0

ええええええええええええええええええええええええん:50、release_id:112、track_id:57、position: "12"> "12"のように見えるのは文字列です。今質問すると、なぜ私の移行作業ができなかったのですか? – Raoot

+0

以前はActiveRecordを使用してソートを処理していましたが、私がHerokuにプッシュすると、それはもっと大きな問題を引き起こしていました。 ( – Raoot

+1

herokuのコンソールにログインして手動で移行してみて、出力を見てみると、何が問題なのか、いくつかの手がかりを与えるかもしれません。 – Ekampp

関連する問題