Jak zmienić domyślne pole po którym sortuję ActiveRecord?

Jeżeli mam coś takiego

@category = Category.find(params[:id])
@category.posts.each do |p|
   puts p.title
end

to sortuję posty danej kategorii po ID, a jak zmienić pole po jakim sortuję w takim wypadku? Np. po dacie modyfikacji albo nazwie? Dzięki wielkie.

I jeszcze jedno pytania, bardzo podstawowę ;-), jak ograniczyć iteracje each do x razy?

Dokumentacja do railsow naprawde nie gryzie :wink:

Pozdrawiam
Pawel

Czytałem i nic nie zalazłem, jakaś wskazówka?

słabo czytasz ; ]
[quote=“Class
ActiveRecord::Base”]:order: An SQL fragment like “created_at DESC, name”.[/quote]
edit
zawsze możesz też ‘jechać czystym’ SQLem

yyyyy… chyba jednak nie przeczytales dokladnie i do konca


:order

No bez przesady - oczywiscie mozna :wink: Tylko ze nie o to chodzi :wink: Jeszcze ktos uwierzy w to co napisales i bedzie problem :wink:

Pozdrawiam
Pawel

;]
sądzę, że można znaleść taki problem którego inaczej nie da się rozwiązać…

a całkiem zapominać o SQLu nie jest dobrym wyjściem ; )

Ale panowie mi nie oto chodzi, wiem że jest :order, mi chodzi jak już znajde te kategorie i iteruję jej np. posty (polączone z tą kategorią) przez each, to jak mogę w tym eachu posortować rekordy.

aaa to sorry :slight_smile: nie doczytalem :wink:

Nie wiem jak masz to zorganizowane i jak chcesz dalej na tym operowac ale zasada jest mniej wiecej taka:

[code=ruby]category = Category.find(1, :include => :posts, :order => “posts.date DESC”)

jakis kod

category.posts.each { |movie|

iteracja

}[/code]
Mozna tez to zrobic inaczej, ale polecam powyzsze rozwiazanie:
http://forum.rubyonrails.pl/viewtopic.php?pid=2373#p2373

Udało mi się wyczaić że można zrobić po prostu: :wink:

category.posts(:order => ‘date’).each do |p|

end

Można, ale w ogólnym przypadku rozwiązanie ruthrsc jest lepsze - jedno zapytanie do bazy danych zamiast dwóch. Jeżeli jest taka możliwość i na pewno będzie się korzystać z tego co chcemy pobrać używając asocjacji to najlepiej dodać to w :include.

Najlepiej zdefiniuj domyśle sortowanie przy has_many

class Category

has_many :posts, :order => ‘date’

end

Jeśli to nie wystarczy i będziesz miał szczególne przypadki to najlepiej rób tak jak napisał ruthrsc

Category.find :all, :include=>:posts, :order => ‘posts.date DESC’

mniej więcej.

Jeżeli chodzi o has_many :order => “costam”, to trzeba dobrze przemyśleć. W tym akurat wypadku jest to w miarę dobre rozwiązanie. Ale w wielu innych nie zawsze takie fajne. Odsyłam do tego posta na blogusiu Jamisa Buck.

Cytacik:

Nie oceniona pomoc z Was Panowie, dzięki wielkie! :wink: