[ruby-it] Ordinare risultati find in base a campo esterno

Pietro Giorgianni giorgian a gmail.com
Mer 2 Dic 2009 16:39:48 CET


Il 02 dicembre 2009 16.00, Giorgio Arcella <a-mj a hotmail.it> ha scritto:
> Buondė!
> Ho due quesiti da proporre!
> il primo, molto semplice:
> c'č un modo pių UMANO di scrivere questo ciclo?
>
>><h1>News pių commentate</h1>
>>  <% i = 5 %>
>>  <% for neew in @neews_piu_commentate %>
>>    <p><b><a href="neews/<%= neew.id%>">
>>                        <%=h neew.titolo %>
>>                      </a></b>
>>                      <span style="font-size: 10px; font-style: italic;">(<%= >neew.comments.size >%> commenti)
>>                      </span>
>>               </p>
>>    <% i -= 1 %>
>>    <% if i== 0 %>
>>      <% break %>
>>    <% end %>
>>  <% end %>

* fatti passare direttamente 5 oggetti (usando :limit => 5 nel find) e
butta tutte le istruzioni con i;
* non costruire tu href nei link, usa piuttosto link_to.

> poi x me l'importante č sempre che funzioni, e almeno questo funziona

se, una volta che funziona, sei pronto a farti fucilare piuttosto che
fare modifiche, fai pure; in caso contrario, forse non basta che
funzioni...

> secondo:
> ho il modello neews, che has_many :comments, e il modello comments, che
> belongs_to :neew
> In quel ciclo di prima io stamperei a video le prime 5 news pių
> commentate, (ovvero che hanno neew.comments.size maggiore). Il problema
> č come ordinare l'array da cui tirar fuori i commenti in base al numero
> di commenti presente nella news...

prova una cosa tipo questa:

@neews_piu_commentate = Neews.all :limit => 5, :joins => :comments,
:group => 'neews.id', :order => 'count(comments.id) DESC'


pietro


More information about the Ml mailing list