2010-09-23 4 views
0

J'ai un contrôleur que je veux refactoriser. Ce contrôleur rend essentiellement un document XML formaté.Rails: aide contrôleur refactoring

Le contrôleur fait 4 choses principales.

  1. Obtenir des enregistrements d'une base de données
  2. Il lit un fichier xml statique RAILS_ROOT/config
  3. Il parcourt les enregistrements DB et gsubs la doc XML en utilisant les données DB
  4. Il rend le document XML comme: texte

Ma question est:

Où est le bon endroit pour 2/3 à se produire dans des rails fr amework? Il me semble qu'ils ne devraient pas être dans le contrôleur.

Je suis sur Rails 2.3

Vive

Répondre

1

Je ne sais pas ce que les meilleures pratiques est, mais dans mon cas, je ferais 1, 2 et 3 dans une méthode de classe dans le modèle . Je créer une méthode de modèle qui prend le nom du fichier XML de base.

Je ferais quelque chose comme ça ... (CAVEAT: Je ne suis pas sûr à 100% ce qui est syntaxiquement correct, je suis encore un peu nouveau pour Rails)

# app/models/mymodel.rb 
class MyModel < ActiveRecord::Base 

    # ... 

    def self.formatXml(xml_base) 
    dataRecords = MyModel.find(:whatever) # step 1 

    # open the XML and read it into a string, this is step 2 
    # take the XML string, do the appropriate gsubs 

    return my_xml_string; 
    end 
end 

# app/controllers/mycontroller.rb 
class MyController < ActionController::Base 

    # ... 

    def myAction 
    formattedXml = MyModel.formatXml(whateverXmlFileName) 

    render :text => formattedXml 
    end 
end 
+0

Merci ceci semble bien – user448157