나는 Relationships 클래스가 있는데, 특정 날짜 범위 (현재와 4 주 전)에 몇 명의 친구가 있었는지에 대한 목록을 뱉어보고 싶습니다.루비에서 특정 created_at 날짜까지 어떻게 계산합니까?
은 내가 html.erb에서 다음을 시도했지만 그것은 작동하지 않는 것 :
<table>
<% rightnow = DateTime.now.to_i %>
<% twentyeight = Time.at(rightnow).to_time - 28.days %>
<% twght = twentyeight.to_i %>
<% (twght..rightnow).step(1.day).map do |time| %>
<tr><th><%= Time.at(time).strftime("%a %b %y") %></th></tr>
<tr><td><%= Relationship.where(:follower_id => @user.id, :created_at => from .. to time).count %></td></tr>
</table>
내가 대답이 하나의 라인을 따라 수 있습니다 의심하지만 난 몰라 그것을 구현하는 방법 ...
Ruby count items by date
또한 MVC와 여전히 씨름 중이므로 어떻게 코드를 정리할 수 있습니까? 내 users_controller 메서드를 만들려고했지만 성공적으로 호출 할 수 없습니다.
건배.
편집 :
여기에 또 다른 시도가 있습니다. 피드백 오신 걸 환영 할 (+ 28 일 전)
<tfoot>
<% before = DateTime.now - 28.days%>
<% following = Relationship.where(:followed_id => @user.id) %>
<tr>
<% before.step(before + 28, 1) do |time| %>
<th><%= time.strftime("%a %b #{time.day.ordinalize}") %></th>
<% end %>
<%의 before.step | 시간 | %> 아마
<td>
<%= following.all(:conditions => ["created_at < ?", time.end_of_day]).count %>
</td><% end %>
</tr>
</tbody>
</table>
건배 @karmajunkie 및 보리스. 나는 그것을 지금 시도 할 것이다. 그동안, 나는 MVC가 아닌 다른 솔루션을 제안했다. 내 의견을 나에게 줄 수 있다면 제 질문에 편집했습니다. – Ribena
감사합니다. 코드 버전을 구현했으며 잘 작동합니다. 하지만 나는 내 편집물에 게시 된 코드보다 더 많은 쿼리를 받고 있다고 생각합니다. 코드로 쿼리 수를 줄이는 방법이 있습니까? – Ribena
당신이 실제로 구현하고있는 것을보아야 하겠지만 내 충고는 쿼리에 대해 너무 걱정하지 않아야합니다. 병목 현상이되면 문제를 해결하십시오.그것은 새로운 레일 devs들이 머리를 감싸는 것이 일반적으로 어려운 일이며, 그럴 필요가 없지만 중요한 것들을 최적화 할 이유가 없습니다. 예를 들어, 이것은 처음에는 몇 가지 추가 쿼리를 실행할 수있는 캐시 가능보기이지만 캐시가 만료되거나 무효화 될 때까지 매번 0이 실행됩니다. – karmajunkie