2011-05-23 1 views
0

Dans mon projet de rails, j'ai différentes listes de données que je dois gérer avec des opérations CRUD et chaque liste ne mérite pas un modèle ou un échafaudage entier pour le maintenir, quelle est la meilleure façon de gérer cela sur rails?Comment faire pour lister des données qui n'appartiennent pas à un modèle et n'est pas un modèle seul dans les rails?

Maintenant, j'utilise un modèle de liste avec le nom: chaîne contenu: texte pour enregistrer chaque liste comme un enregistrement de la liste et faire de l'analyse lorsque j'ai besoin d'une liste dans mon application. Voici mon modèle de liste actuelle:

class NoListException < Exception 
end 

class List < ActiveRecord::Base 
    validates :name, uniqueness: true 

    def self.container_types 
    get_list('container_types').collect do |b| 
     b.split(',').collect {|c| c.split(':').last } 
    end.collect {|p| "#{p.last} - #{p.first}" } 
    end 

    def self.location_categories 
    get_id_value_list('location_categories') 
    end 

    def self.services_types 
    get_list('services_types') 
    end 

    private 

    def self.get_id_value_list(name) 
    get_list(name).collect do |b| 
     (b.split(',').collect {|c| c.split(':').last }).rotate 
    end 
    end 

    def self.get_list(name) 
    list = List.find_by_name(name) 
    raise NoListException if list.nil? 
    list.content.split(';') 
    end 
end 

Je pense est un problème très fréquent, en raison de ce que je demande s'il y a une meilleure façon de gérer ces listes?

Répondre

0

Ce n'est pas mal d'avoir un modèle sans échafaudage pour le supporter. Je le fais souvent avec des modèles de catégorie ou d'étiquette qui sont souvent créés et gérés par les modèles sur lesquels ils agissent. Alors ne vous sentez pas obligé de construire un échafaudage entier pour un modèle simple. Si vous n'avez pas besoin de conserver les données dans la base de données, vous pouvez toujours utiliser ActiveModel, ou si vous avez besoin de persister et que vous pouvez trouver un autre modèle à greffer, regardez dans la sérialisation, c'est un bon moyen stocker des données en vrac

Questions connexes