class Forum < ActiveRecord::Base
attr_accessible :name, :description
has_many :topics, :dependent => :destroy
has_many :posts, :through => :topics
def most_recent_post
topic = Topic.first(:order => 'last_post_at DESC', :conditions => ['forum_id = ?', self.id])
return topic
end
end
class Topic < ActiveRecord::Base
attr_accessible :name, :last_poster_id, :last_post_at, :forum_id, :user_id, :content, :topic_id, :user_id
has_many :posts, :dependent => :destroy
belongs_to :user
end
class Post < ActiveRecord::Base
attr_accessible :content, :topic_id, :user_id
belongs_to :topic
belongs_to :user
end
Cześć,
jak wyświetlić w widoku wątku, numery poszczególnych postów?
Domyślam się, że trzeba użyć scope, razem z post.id?
each_with_index, a jeśli nie to może acts_as_list?
Uważaj z tym id. gdy usuniesz jeden rekord to lista będzie miała dziury. Już lepiej tak jak wskazał sevos użyć acts_as_list i wyświetlać position.
Ewentulanie jeżeli wyświetlasz partiala przez kolekcję (masz partial _post i w widoku wyświetlasz render @posts) to otrzymujesz licznik ile razy ten partial był wyświetlany. Pojawia się on pod postacią post_counter wewnątrz tego partiala (w tym przypaku akurat).
Dzięki spróbuję acts_as_list.
Wyświetlam posty poprzez:
- for post in @topic.posts
Zrób partial _post.html.haml w którym zdefiniujesz jak ma wyglądać dany wpis, a tam gdzie to wyświetlasz podaj
= render @topic.posts
- Ta metoda jest szybsza (nie testowałem, ale podobno tak jest)
- łatwiej potem zcache’ować każdy wpis
- jest bardziej RailsWay
To ja powiem że testowałem i faktycznie, renderowanie kolekcji jest szybsze (znacząco) niż renderowanie każdego z elementów kolekcji osobno, w pętli.
Pics^hBenchmarks or it didn’t happen!
Mógłbyś pokazać jakiś kod przykładowy i wyniki dla 1000 req? Różnice są na poziomie 5ms czy raczej 500ms? Dla jakiej ilości danych?