我是rails的新手,并希望停止在Excel中制作相同的繁琐报告并创建营销分析仪表板。
我有一个用户模型,包含created_at,marketing_source,purchase和revenue。
我想在sql中做什么
select marketing_source, weekofyear(created_at), count(id), sum(revenue)
from User
where weekofyear(created_at) between # and #
group by marketing_source, weekofyear(created_at)
然后将其作为表格打印到我的页面。
我只是不确定在哪里以及如何进行转换。我是通过
来做的sql.execute
在控制器代码中?我应该创建一个rake任务来制作一个csv然后使用javascript来读取csv并打印出来吗?
任何方向都会非常感激。
答案 0 :(得分:2)
欢迎使用rails
如果您不熟悉rails,请查看railscasts.com和http://guides.rubyonrails.org/
在rails中你不必编写像这样的sql语句。
我假设您已完成数据库迁移并在数据库中包含所有必需的列
在你的users_controller中,我认为这可以做你想要的。
def index
@users = User.where
(["created_at >= ? AND created_at <= ?", yesterday.beginning_of_day, yesterday.end_of_day]).
group("marketing_source")
end
然后在你的相应视图中 /views/users/index.html.erb
<table>
<tr>
<th>Name</th>
<th>revenue</th>
<th>Marketing source</th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%=h user.name %></td>
<td><%=h user.revenue %></td>
<td><%=h user.marketing_source %></td>
<td><%= link_to 'Show', user %></td>
<td><%= link_to 'Edit', edit_user_path(user) %></td>
<td><%= link_to 'Destroy', user, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>