私は Ruby 1.9.2、Rails 3.0.x を使用しており、MySQL DB を使用しています。毎日新しいメッセージを投稿できるメッセージモデルがあります。
これらのメッセージを月と年の両方でグループ化して表示するインデックス アクションがあります。これは基本的にメッセージをフィルタリングするために使用されます。
私のクエリは次のようになります:-
@active_msgs = Messages.where('expiry > ?', Time.now).order('created_at DESC')
この投稿を参照した後、Rails で group_by 関数を使用しました。
私のGroup Byクエリは次のとおりです:-
@msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month }
@msgs_by_month というハッシュが返されました。これはメッセージを月ごとにグループ化するのに役立ちましたが、2011 年 9 月と 2012 年 9 月などを区別するのに役立つため、一意のキーを形成するために年を考慮する必要があります。
現在のキーは Hash[Month] 型のみです (例: Hash[9] => 9 月の場合、すべての適切な値を表示できます)。月と年のタイプの一意のキーを取得するにはどうすればよいですか。これを簡単にループして、作成の月と年でグループ化されたすべてのレコードを表示できます。
ありがとうございました
編集:-
これを行う 1 つの方法は、こちらcreated_at.to_date
で提供されている APIを使用することだと思います
。group_by function で機能する一意の月と年の組み合わせキーを取得するために、日をどのように取り除くことができるのだろうか。created_at.to_date