Je voudrais extraire la logique des contrôleurs vers quelque part que cela puisse être plus SEC. Quelle est la meilleure façon de gérer quelque chose comme ce qui suit dans Rails?Meilleure pratique pour extraire des requêtes de modèle ActiveRecord dans Rails?
Par exemple, plutôt que d'avoir la requête dans les contrôleurs, je pourrais le placer dans le modèle:
class SmoothieBlender < ActiveRecord::Base
belongs_to :user
def self.get_blenders_for_user(user)
self.where(["user_id = ?", user.id])
end
end
Ou serait-il préférable de créer un module en tant que couche de service et inclure dans chaque modèle qui l'utilise? Ou simplement en faire une classe de service complète accessible depuis le contrôleur User et Blender? Où mettriez-vous cette classe?
class BlenderService
def self.get_blenders_for_user(user)
SmoothieBlender.where(["user_id = ?", user.id])
end
end
Je suis nouveau à Ruby et Rails, donc si cela est une question/syntaxe stupide est incorrecte, pardonnez-moi. Merci d'avance!
Ahh, a du sens! Un peu comme les extensions dans .Net. Merci! – MunkiPhD
Si le paramètre provient d'un formulaire en params, n'oubliez pas d'utiliser .to_i dessus. Par exemple où ("user_id =?", User_id.to_i) –
to_i va essayer de l'analyser et échouer si ce n'est pas désinfecté je présume? – MunkiPhD