En fait je n'ai pas de modèle SensorLog. 
J'aimerai pouvoir, directement à partir de mon modèle Sensor déterminer sur 
quelle modèle (TemperatureLog, HumidityLog, etc.) me connecter pour extraire 
les logs correspondant au type de sonde. Il me semble que ça doit pas être 
sorcier, mais je m'en sort pas. Je dois sans doute réviser les bases 
d'ActiveRecord ;-)

Nicolas


Le 7 janv. 2010 à 11:09, Cyril Mougel a écrit :

> Le 07/01/10 07:23, Liste diff a écrit :
>> Merci Cyril de ta réponse, mais ce que j'aimerai faire est du genre:
>> 
>> @logs = sensor.logs
>> 
>> sans me soucier du genre de log à récupérer. Le choix de la table doit se 
>> faire automatiquement. Je n'ai pas de moyen de changer le schéma de la table 
>> des logs, mais je peux introduire un type de sonde.
>> 
>> Y-a-t'il une solution, en spécifiant le type de log dans mon modèle Sensor, 
>> de retrouver le modèle qui correspond au logs de la sonde spécifique? 
>> 
>> Désolé pour ces questions sans doute basique, mais je suis novice en Rails.
>> 
> 
> Dans ce cas un simple has_many :logs suffit
> 
> class SensorLog < ActiveRecord::Base
> end
> 
> class TemperatureLog < SensorLog
> end
> 
> class HumidityLog < SensorLog
> end
> 
> class Sensor
>  has_many :logs,
>           :class_name => "SensorLog",
>           :foreign_key => "sensor_id"
> end
> 
> Lorsque tu feras sensor.logs tu auras une liste de SensorLog
> indépendamment de leur Type.
> 
> A tester, mais je crois même que le cast de la sous-classe se fait
> automatiquement. Sinon, il suffit de faire une mini-méthode dans
> SensorLog qui check le type et cast dans la bonne classe.
> 
> 
> -- 
> Cyril Mougel
> http://blog.shingara.fr/
> -- 
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
> [email protected]
> Pour résilier votre abonnement envoyez un e-mail à l'adresse 
> [email protected]

-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]

Répondre à