0

我已经尝试了一百万种方法,但我无法弄清楚,

如何从视图中访问以下方法的数量和创建日期(即在模型中)?

def self.groupit
  group("hour(created_at)").select("count(*) as quantitymy, hour(created_at) as createddate")
end

我确定我做错了,组的东西也不起作用,有人可以帮忙吗?谢谢 :)

更新:我有一个用户模型、一个组模型和一个帖子模型。

用户属于一个组,帖子属于用户。帖子仅通过用户属于组。

我试图显示组中发布的所有帖子,按时间分组。所以应该是

Group 1: 1 post at 13:00, 5 posts at 14:00

Group 2: 17 posts at 12:00, 1 post at 13:00, 2 posts at 14:00

等等

我通过控制器将其显示为:

 @groups = Group.all

然后在视图中遍历它们:

<% @groups.each do |g| %>
    <% if g.posts.exists? %>
         <tr>
             <td><b><%= g.name %></b>;
             <%= g.posts.count %> posts
             <% g.posts.each do |post| %>
                 <%= post.created_at.strftime("%H") %>:00;
          <% end %>
              </td>
       <% else %>
            <% end %>
      </tr>
 <% end %>

更新 2/答案:

<% @groups.each do |g| %>
    <% if g.posts.exists? %>
         <tr>
             <td><b><%= g.name %></b>;
             <%= g.posts.count %> posts
             <% g.posts.group("hour(posts.created_at)").count("hour(posts.created_at)").each do |created_at, quantitymy| %>
        <%= created_at %>; <%= quantitymy %>
          <% end %>
              </td>
       <% else %>
            <% end %>
      </tr>
 <% end %>
4

1 回答 1

0

我想你想要这样的东西:

group("hour(created_at)").count("hour(created_at)")

这将为您提供一个有序的散列,其中键是小时(created_at)值,值是计数。

您可以像这样显示它:

Group.group("hour(created_at)").count("hour(created_at)").each do |created_at, quantitymy|
   # ...
end
于 2013-03-19T19:45:42.277 回答