rails form_with form_for form for ruby-on-rails activerecord grouping

ruby-on-rails - form_with - select rails helper



¿Agrupación por semana/mes/etc. y ActiveRecord? (7)

Aquí está la versión más refinada de este

@user.comments.group("year(created_at)").group("month(created_at)").count

Estoy haciendo algunos cálculos estáticos en mi producto. Un usuario ha realizado una serie de operaciones, digamos comentarios publicados. Quiero poder mostrarles cuántos comentarios publicaron por semana durante el último mes o por mes durante el año pasado.

¿Hay alguna manera con activerecord para agrupar de esta manera? ¿Es mi mejor esfuerzo simplemente hacer esto manualmente - para iterar sobre la suma de registros según mis propios criterios?

class User < ActiveRecord::Base has_many :comments end class Comments < ActiveRecord::Base belongs_to :user end @user.comments(:all).map {|c| ...do my calculations here...}

o hay alguna forma mejor?

¡Gracias! Oren



En este caso, la mejor solución para mí fue hacerlo en SQL directo o usar la función Ruby group_by:

@user.all.group_by{ |u| u.created_at.beginning_of_month }


Mi suposición sería algo así como:

@user.comments.count(:group => "year(created_at),month(created_at)")

Código seco, mmm


Mira el plugin has_activity.


Mira la gema de la fecha del grupo

https://github.com/ankane/groupdate

tiene commits recientes, funciona con postgresql, se integra fácilmente con chart kick para gráficos rápidos, ¡y funciona con husos horarios!


Usar group_by

@user.comments.group_by(&:week) class User < ActiveRecord::Base def week some_attribute_like_date.strftime(''%Y-%W'') end end

Esto le dará una lista agrupada en el formato de YYYY-WW