2011-05-28 5 views
0

J'ai 3 modèles, client, paquet et emplacement.Utiliser ActiveRecord dans Ruby On Rails 3

Le client se connecte et peut afficher une chronologie des emplacements de ses packages.

class Location < ActiveRecord::Base 

def find_all_by_customer(customer) 
    self.joins(:packages => :customer).where("customers.id = ?", customer).select("DISTINCT(locations.id), locations.name, locations.created_at") 
end 

Renvoie au client tous les emplacements pour tous ses packages, afin qu'ils puissent être affichés sur la timeline.

La pièce avec laquelle je suis aux prises affiche ensuite le ou les numéros de colis à côté de chacun de ces emplacements. Le problème est que les numéros de paquet dépendent à la fois de current_user et de l'emplacement.

<% @locations.each do |location| %> 
    <%= location.name %> 
    <%= # Want to display all package numbers in this location for the logged in user. %> 
<% end %> 
+0

Quel est le numéro de paquet et en quoi dépend-il du current_user et de l'emplacement? – Flauwekeul

+0

C'est juste une référence unique pour ce paquet. Cela dépend d'un utilisateur, car un utilisateur reçoit ce paquet, et cela dépend d'un emplacement car le paquet doit être à un emplacement à tout moment. – pingu

+0

Comment le numéro de paquet est-il défini alors? Est-il généré chaque fois que le paquet change son emplacement? Je ne le vois pas interrogé dans votre déclaration select.Je suis désolé, je ne comprends pas comment il est censé fonctionner :) – Flauwekeul

Répondre

0

Vous devriez être en mesure de faire quelque chose comme location.package.reference_number, si vos associations sont configurés correctement.

+0

Cela me donnera tous les numéros de référence pour tous les paquets à un emplacement particulier, mais je veux aussi qu'ils soient également limités par l'utilisateur actuel. – pingu