maeshimaの日記

メモ書きです

複数ユーザ毎のコメント数を調べるコード

復習用エントリ。これは絶対に覚えなくてはならないコード!

user = User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")

各ユーザ毎に user.comments とすると、クエリがユーザ数分発行されてしまうけど、上記のコードなら一回ですむ!

今週のrailscasts - maeshimaの日記

ActiveRecord::RecordInvalid と ActiveRecord::RecordNotSaved

  • ActiveRecord::RecordInvalid を手動で raise するには引数として model オブジェクトが必要。
  • 下記のように、validationに失敗したオブジェクトを取得できる
begin
  complex_operation_that_calls_save!_internally
rescue ActiveRecord::RecordInvalid => invalid
  puts invalid.record.errors
end

Arrayを分割する系のメソッド

railsで拡張されたメソッド。

Array#in_groups(n)

n個の配列を持つ配列を返す。

Array#in_groups_of(n, fill_with = nil)

n個の要素を持つ配列を持つ配列を返す。each_slice と似てるけど、配列(の配列)を返すメソッドであるというのと、fill_with に何か値を入れると、n個で割り切れない要素数の時、fill_with で指定した値を入れて全部n個の配列になるようにする部分が異なる。

閲覧専用のgitクライアントはtigで十分

Rails の git log を RSS か何かで継続的に読みたいと思ってgitクライアントぐぐったけど、別に tig で必要十分っぽい。調べたらdiffから変更ファイル全体も見に行けるし。