Rails模型数据转换

时间:2012-10-22 19:45:56

标签: ruby-on-rails

我是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并打印出来吗?

任何方向都会非常感激。

1 个答案:

答案 0 :(得分:2)

欢迎使用rails

如果您不熟悉rails,请查看railscasts.comhttp://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>