ruby on rails - Show created users for every day -
i need count how many users created every day last week. created this:
users = user.where(created_at: (time.now - 7.day)..time.now) users.group_by{|p| p.created_at.at_beginning_of_day}.each |day, array| puts "on #{day} #{array.size}" end
i want output be:
on sun 29 on mon 34 etc.
but instead of this:
{sun, 25 aug 2013 00:00:00 cest +02:00=>[#<user id: 10, email: "jssdc@ssds.cz", encrypted_password: "$2a$10$qwz7p86jaurxvwjj8gzfm.o2a589y7t4htcojyuqe4ak...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2013-08-25 12:30:05", updated_at: "2013-08-25 12:30:40", authentication_token: "ytmoqbwrhvzsen7bbsvu", confirmation_token: "fuwen7dghc6xprqtspwr", confirmed_at: nil, confirmation_sent_at: "2013-08-25 12:30:05", unconfirmed_email: nil>], tue, 27 aug 2013 00:00:00 cest +02:00=>[#<user id: 11, email: "bz@sefdsa.cz", encrypted_password: "$2a$10$4zzq58b.az9vz1tfanvkven7pylrogkeilpv8vvxfy1u...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2013-08-27 21:44:06", updated_at: "2013-08-27 21:44:06", authentication_token: "a1mphxuqlspdnso25xuk", confirmation_token: "sipxktmunnvnp4repsyd", confirmed_at: nil, confirmation_sent_at: "2013-08-27 21:44:06", unconfirmed_email: nil>], wed, 28 aug 2013 00:00:00 cest +02:00=>[#<user id: 12, email: "fdsafdas@sfdsa.cz", encrypted_password: "$2a$10$y/rgxp5dpwq.jpv2d9htaolglfjqgtjns6iwpfyfwxlj...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2013-08-27 23:00:43", updated_at: "2013-08-27 23:00:43", authentication_token: "ue9ty2k5eorgm4ovemhf", confirmation_token: "a7186dyyyvnmybptpj6k", confirmed_at: nil, confirmation_sent_at: "2013-08-27 23:00:43", unconfirmed_email: nil>, #<user id: 13, email: "madafaka@lol.cz", encrypted_password: "$2a$10$2ydv5kns3jmpp.oj/f6rqogu6p6dfs/xoc33eytlaj6z...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2013-08-27 23:58:51", updated_at: "2013-08-27 23:58:51", authentication_token: "fieir4zj9y9pwux82clq", confirmation_token: "9ujvwvbvnubyzwism4sy", confirmed_at: nil, confirmation_sent_at: "2013-08-27 23:58:51", unconfirmed_email: nil>]}
how can output created users every day last week in desired format?
user.group("date(created_at)").count
you output like
{"2013-08-27"=>1, "2013-08-13"=>2, "2013-08-19"=>2}
for getting count 1 week can do,
user.where("created_at > ?", 7.days.ago).group("extract(dow created_at)").count
this give output like
{"2" => 2, "0" => 1}
"0" sunday, "1" monday , on
Comments
Post a Comment