2009-05-04 8 views
0

Comment grouper des étendues nommées? Par exemple, j'ai deux modèles, Utilisateur et Activité. Un utilisateur peut avoir plusieurs activités.Comment regrouper/réutiliser des étendues nommées dans Rails?

activité a deux champs nommés:

Activity.ordered_by_created_at 
Activity.top_20 

Je veux créer un nouveau champ nommé Activity.recent tel que

Activity.recent == Activity.ordered_by_created_at.top_20 

De cette façon, je peux appeler récente sur user.activities.

user.activities.recent 

Est-ce possible? Merci.

Répondre

0

Lorsque vous appelez user.activities, en supposant que vous avez une has_many: activités relation dans votre fichier user.rb, ActiveRecord retourne un tableau de toutes les activités des utilisateurs. Vous voudrez peut-être envisager de changer l'approche d'Activtiy.recent.user (UID) et simplement écrire un named_scope dans votre fichier activity.rb qui trouve les utilisateurs associés à l'activité.

+0

Hmmm ... Oui, Activity.find_by_user_id (user.id) .recent est probablement le moyen de le faire. Merci. – gsmendoza

0

Vous pouvez probablement faire ceci:

class Activity < ActiveRecord::Base 
    def self.recent 
    ordered_by_created_at.top_20 
    end 
end 
+0

Oui, c'est ce que j'ai fait. Mais cela ne fonctionne pas pour 'user.activities.recent' – gsmendoza

Questions connexes