J'ai hérité d'une petite application rails et j'ai besoin de l'étendre légèrement. C'est en fait assez simple, mais je veux m'assurer que je le fais de la bonne manière ...GET params dans le projet ruby-on-rails - meilleures pratiques?
Si je visite myapp: 3000/api/personnes il me donne une liste complète des personnes au format XML. Je veux passer param dans l'URL afin que je puisse retourner les utilisateurs qui correspondent à la connexion ou à l'e-mail, par exemple. yapp: 3000/api/persons? login = jmais donnait la personne avec le login correspondant. Voici le code:
def index
if params.size > 2 # We have 'action' & 'controller' by default
if params['login']
@person = [Person.find(:first, :conditions => { :login => params['login'] })]
elsif params['email']
@persons = [Person.find(:first, :conditions => { :email => params['email'] })]
end
else
@persons = Person.find(:all)
end
end
Deux questions ...
- Est-il sécuritaire? Est-ce que ActiveRecord me protège des attaques par injection SQL (remarquez que je fais confiance aux params qui arrivent)?
- Est-ce la meilleure façon de le faire, ou existe-t-il des rails automagiques que je ne connais pas?
note - find_all_by_xxxx renvoie un tableau, qui ne doit pas être confondu avec find_by_xxxx, qui retournerait n'importe quelle ancienne correspondance ou nil. – Levi