Forum: Italian Ruby user group ordinamento complesso di has_many

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
tarini (Guest)
on 2007-04-20 16:20
(Received via mailing list)
ragazzi come prova sto implementando un forum con rails e ho trovato il
primo problema nella definizione dei modelli.

cerco di essere chiaro e sintetico:
ho 3 modelli (forum, topic e post) e ciascuno di essi include una
collection
del modello sottostante (un forum ha N topic, un topic ha N post).
Ovviamente esiste anche la situazione contraria (un post appartiene ad
un
topic, un topic appartiene ad un forum).

Il mio problema deriva nella clausula :order all'interno del modello
Forum.

ora ho definito cosi:

  has_many :topics,
           :dependent => :delete_all,
           :order => "update_at DESC"

il fatto è che i post di ciascun forum dovrebbero essere caricati in
ordine
di data non "propria" ma dell'ultimo post al quale fanno riferimento.

come posso fare?? devo scrivere a manina un JOIN nel :finder_sql??

grazie a tutti

--
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
Matteo V. (Guest)
on 2007-04-20 16:29
(Received via mailing list)
On 4/20/07, tarini <removed_email_address@domain.invalid> wrote:
>
> ordine
> di data non "propria" ma dell'ultimo post al quale fanno riferimento.
>
> come posso fare?? devo scrivere a manina un JOIN nel :finder_sql??


O quello (magari con una find_by_sql) oppure denormalizzi il db e ti
tieni
una copia della "data di ultima modifica" del topic, aggiornata nella
after_save del post.

M

grazie a tutti
tarini (Guest)
on 2007-04-20 18:32
(Received via mailing list)
Il 20/04/07, Matteo V. <removed_email_address@domain.invalid> ha scritto:
> > Ovviamente esiste anche la situazione contraria (un post appartiene ad
> >            :order => "update_at DESC"
> after_save del post.
a sto punto mi sa che accetto l'idea della denormalizzazione del db...


M
> > http://lists.ruby-it.org/mailman/listinfo/ml
> >
> _______________________________________________
> Ml mailing list
> removed_email_address@domain.invalid
> http://lists.ruby-it.org/mailman/listinfo/ml
>



--
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
David W. (Guest)
on 2007-04-20 18:32
(Received via mailing list)
On 4/20/07, tarini <removed_email_address@domain.invalid> wrote:
> ragazzi come prova sto implementando un forum con rails e ho trovato il

Sai che esistono gia` cose del genere, vero?

http://beast.caboo.se/

Conoscete altri che vi sembrano buoni?

--
David N. Welton
 - http://www.dedasys.com/davidw/

Linux, Open Source Consulting
 - http://www.dedasys.com/
tarini (Guest)
on 2007-04-20 18:33
(Received via mailing list)
Il 20/04/07, David W. <removed_email_address@domain.invalid> ha scritto:
>
> On 4/20/07, tarini <removed_email_address@domain.invalid> wrote:
> > ragazzi come prova sto implementando un forum con rails e ho trovato il
>
> Sai che esistono gia` cose del genere, vero?
>
> http://beast.caboo.se/
>
> Conoscete altri che vi sembrano buoni?



sisi... lo voglio fare  più  che altro  per imparare...  e magari
contribuire a rubyforge

--
> David N. Welton
> - http://www.dedasys.com/davidw/
>
> Linux, Open Source Consulting
> - http://www.dedasys.com/
> _______________________________________________
> Ml mailing list
> removed_email_address@domain.invalid
> http://lists.ruby-it.org/mailman/listinfo/ml
>



--
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
tarini (Guest)
on 2007-04-20 18:49
(Received via mailing list)
Il 20/04/07, tarini <removed_email_address@domain.invalid> ha scritto:
> > >
> > >
> > > come posso fare?? devo scrivere a manina un JOIN nel :finder_sql??
>
per dovere di cronaca riporto quello che ho realizzato con successo

  after_save :updateTopic
  def updateTopic
    topic.last_updated_at = Time.now
    topic.save
  end

thanks
Matteo V. (Guest)
on 2007-04-21 20:04
(Received via mailing list)
>
> per dovere di cronaca riporto quello che ho realizzato con successo
>
>   after_save :updateTopic
>   def updateTopic
>     topic.last_updated_at = Time.now
>     topic.save
>   end
>
> thanks


Potenza di ActiveRecord!  Ho un solo appunto: perché non passi allo stile
standard di Ruby?  "update_topic" invece che updateTopic...  Ci metterai
un
attimo ad abituarti, e il tuo codice sarà più gradito alle moltitudini.

M

_______________________________________________
tarini (Guest)
on 2007-04-21 21:12
(Received via mailing list)
hai ragione... provvedo subito :)

Il 21/04/07, Matteo V. <removed_email_address@domain.invalid> ha scritto:
> > thanks
> > Ml mailing list
> > removed_email_address@domain.invalid
> > http://lists.ruby-it.org/mailman/listinfo/ml
> >
> _______________________________________________
> Ml mailing list
> removed_email_address@domain.invalid
> http://lists.ruby-it.org/mailman/listinfo/ml
>



--
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
Rob C. (Guest)
on 2007-04-22 11:53
(Received via mailing list)
Stai usando after_save nel controller o nel model? Potresti usare
before_save nel model perché questa funziona viene chiamato quando il
modello è valido.

class Topic
  def before_save
    self.last_updated_at = Time.now
  end
end

Altrimento invece di last_updated_at usa updated_at e ActiveRecord
farà tutto lui in automatico.
tarini (Guest)
on 2007-04-22 13:13
(Received via mailing list)
Il 22/04/07, Rob C. <removed_email_address@domain.invalid> ha scritto:
>
> Stai usando after_save nel controller o nel model? Potresti usare
> before_save nel model perché questa funziona viene chiamato quando il
> modello è valido.
>
> class Topic
>   def before_save
>     self.last_updated_at = Time.now
>   end
> end


io la sto usando nel model Post in quanto il campo rappresenta la data
di
creazione dell'ultimo post appartenente al topic

Altrimento invece di last_updated_at usa updated_at e ActiveRecord
> farà tutto lui in automatico.


non mi serve... a me serve modificare il campo quando viene creato un
post
appartenente al topic

On 21/04/07, Matteo V. <removed_email_address@domain.invalid> wrote:
> >
> > > Ml mailing list
> removed_email_address@domain.invalid
> http://lists.ruby-it.org/mailman/listinfo/ml
>



--
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
This topic is locked and can not be replied to.