Mon code:
@profile.images
et je voudrais obtenir seulement 10 images à la fois et avec un 10 décalage, comme celui-ci
@profile.images(:limit => 10, :offset => 10)
et pas comme ça
has_many :images, :limit => 10, :offset => 10
Ensuite, je voudrais compter en quelque sorte toutes les images pour ce profil.
@profile.count_images
Merci (:.
has_many :images, :foreign_key => 'on_id', :conditions => 'on_type = "profile"' do
def paginate(page = 1, limit = 10, offset = nil)
page = nil if page < 1
limit = 1 if limit < 1
offset = 0 if(offset && offset < 0)
offset = 0 if (!page)
offset = limit * (page - 1) if (page)
all(:limit=> limit, :offset => offset)
end
fin
Maintenant, je voudrais ajouter ce comportement à d'autres relations has_many Mais je ne voudrais pas copier coller le code .. Une idée?: P
Merci, c'est beaucoup mieux. J'ai compris, mais ce n'est pas vraiment cool: named_scope: paginate, lambda {| page, limite, offset | {: limite => limite || 10,: offset => offset || ((limit || 10) * (page - 1))}} merci vraiment!maintenant je vais l'essayer;) –
+1 pour une technique plus avancée – vladr
J'ai mis à jour ma réponse avec une solution named_scope. –