J'ai une liste de villes, chaque ville a une colonne «active» (booléen). Lorsque je mets une ville en activité, je veux que toutes les autres villes soient inactives.définir toutes les entrées sur inactif lorsque l'un est activé
Quelle est la meilleure façon d'y parvenir?
Je pensais à une autre table qui stocke la ville active. Ai-je besoin d'utiliser un singleton pour ça? Si oui, comment puis-je lier ces deux tables?
Je voudrais obtenir quelques exemples sur la façon de résoudre mon problème. Je vous remercie! :-)
Edit: En ce moment je un modèle: Ville
Une ville peut avoir un nom, un code postal et il peut être actif ou inactif - seulement trois colonnes.
Je commence à remplir la base de données avec 5 villes.
Lorsque j'active la ville n ° 1, toutes les autres villes doivent être inactives.
Lorsque j'active la ville 2, toutes les autres villes doivent être inactives.
Pour ce faire, je vois deux façons différentes:
1) Définir un filtre qui met à jour toutes les autres entrées lorsque je sauvegarde une ville.
2) Stocker l'état actif/inactif dans une seconde table.
Option 2) ressemble à une façon plus propre, une table simple avec une seule entrée. Mais à quoi ressemble le modèle dans ce cas?
J'apprécie vraiment vos réponses, les gars. :-) Connaissez-vous ces jours où vous vous sentez stupide? J'ai un de ces jours. :-(
Option 2):
Ce que j'ai, c'est 'City' et 'ActiveCity'.
Ville a:
- Titre: string
- code postal: entier
ActiveCity a:
- actif: booléens
- CITY_ID => Références: Ville
Ville has_one :active_city
ActiveCity belongs_to :city
Dans mon routes.rb il y a:
resources :active_cities
resources :cities
Les travaux suivants:
c = City.find(1)
ActiveCity.create(:city_id => c, :active => true)
Quand j'ai plusieurs villes, je peux aussi faire:
c2 = City.find(2)
ActiveCity.create(:city_id => c2, :active => true)
Cela signifie que je avoir deux villes actives et c'est maintenant ce que je veux.Qu'est-ce qui est nécessaire pour avoir UNE ville active à tout moment?
C'est une application pour utilisateur unique - en ce moment il n'y a qu'une seule table (pour les villes). J'ai besoin d'une liste de villes où je peux configurer une ville pour qu'elle soit active. Un cronjob vérifie alors la liste et effectue une action spécifique pour la ville active. Il n'y a rien d'extraordinaire alors je pense qu'une deuxième table juste pour stocker la ville active est la voie à suivre. – dmnkhhn
Oui, je le pense aussi. Ce serait comme si l'utilisateur avait un attribut city_id. 'City has_many: users' et': utilisateur appartient à city'. Une fois la ville active à la fois. – Chirantan
J'ai mis à jour ma question initiale. :-) – dmnkhhn