0

100万通りの方法を試しましたが、理解できません。

ビューから、次のメソッドの quantitymy および createddate (モデル内にある) にアクセスするにはどうすればよいですか?

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

私はそれを完全に間違っていると確信しています.グループのこともうまくいきません.誰か助けてもらえますか? ありがとう :)

更新: User モデル、Group モデル、Post モデルがあります。

ユーザーは 1 つのグループに属し、投稿はユーザーに属します。投稿は、ユーザーのみを介してグループに属します。

グループに投稿されたすべての投稿を時間別にグループ化して表示しようとしています。だからそうあるべきだ

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)")

これにより、キーがhour(created_at)の値で、値がカウントである順序付けられたハッシュが得られます。

次のように表示できます。

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