2011-03-29 5 views
0

J'ai un Modèle de la phrase qui contiendra une seule phrase dans la colonne de corps. Il est important d'avoir seulement une phrase par rangée. Cependant, les utilisateurs peuvent entrer plus d'une phrase dans le formulaire. Pas de problème. Je veux vraiment encourager cela. Donc, ce que je dois faire est de scinder les phrases et d'enregistrer seulement une phrase par ligne. Je suis capable de le faire dans le contrôleur assez facilement (un simple .split (".") Le fera), mais cela devient un peu difficile à maintenir après le temps. J'ai vraiment l'impression que le modèle devrait gérer cela.Filtrage des données entrantes

Donc ce que je pense est de faire une sorte de before_save hook dans mon modèle Sentence et de faire la scission là-bas. Évidemment, cela crée aussi des problèmes.

Y a-t-il une meilleure façon de le faire?

+1

Êtes-vous le fractionnement sûr sur "." sera suffisant? Les phrases peuvent se terminer par "!" Et "?" –

+0

Oui, je vais devoir diviser sur plusieurs marques différentes. Mais la principale chose à laquelle je m'occupais était de savoir à quel niveau je me séparais. Mais merci de le signaler. Je vous en suis reconnaissant. –

Répondre

2

Je REFRACTOR dans une méthode de classe, tels que:

Code de semi-Pseudo:

class Sentence << ActiveRecord::Base 

    def self.split_into_sentences(input) 
    input.split(".") 
    end 

    def self.create_sentences_from_body(body) 
    split_into_sentences(body).each{|s| Sentence.create(:body => s)} 
    end 

end 

Ainsi, vous pouvez appeler votre contrôleur:

Sentence.create_sentences_from_body(params[:text]) 
Questions connexes