2012-10-22 3 views
0

Je suis un débutant total à rails, et que vous voulez arrêter de faire les mêmes rapports fastidieux dans Excel et créer un tableau de bord d'analyse marketing.Rails Model Data Transformation

J'ai un modèle utilisateur, avec created_at, marketing_source, les achats et les revenus.

Ce que je veux faire dans sql est

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) 

puis imprimez cela comme une table sur ma page.

Je ne suis pas exactement où et comment faire la transformation. Est-ce que je mets ceci via

sql.execute 

dans le code du contrôleur? Devrais-je créer une tâche rake pour faire un csv et ensuite utiliser javascript pour lire le csv et imprimer le tableau?

Toute direction serait très apprécié.

+0

Je crains que vous ne pas fournir assez d'informations pour recevoir une réponse. Veuillez fournir autant d'informations que possible, car votre question n'est pas très spécifique. – shime

Répondre

2

Bienvenue sur rails

Si vous êtes nouveau sur les rails consulter railscasts.com et http://guides.rubyonrails.org/

En rails vous n'avez pas à écrire des déclarations sql comme celui-ci.

Je suppose que vous avez fait les migrations de bases de données et ont toutes les colonnes nécessaires vous base de données

dans votre users_controller, je pense que ce serait faire ce que vous voulez.

def index 
@users = User.where 
(["created_at >= ? AND created_at <= ?", yesterday.beginning_of_day, yesterday.end_of_day]). 
group("marketing_source") 
end 

ensuite dans votre vue correspondante /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> 
+0

Merci beaucoup pour le guidage! Je pense que cela va me mettre dans la bonne direction, surtout avec l'aide du contrôleur. – user1062293

+0

Content de vous aider. piratage heureux! –

Questions connexes