Les champs personnalisés pour les sujets ajoutent-ils une colonne au modèle des sujets ? J’obtiens une erreur indiquant que non, et j’essaie de comprendre comment résoudre ce problème.
J’ai créé un champ personnalisé pour les sujets en développement, en suivant cette procédure. Appelons-le fun_level. Le champ personnalisé semble être créé avec succès en développement, car si j’effectue un appel AJAX pour récupérer un sujet que j’ai créé après avoir ajouté le champ personnalisé — par exemple ajax("/t/112.json") — cela fonctionne : les données du sujet sont renvoyées avec le champ fun_level contenant la valeur que j’ai saisie.
Mais maintenant, je dois trouver un moyen de récupérer programmatiquement tous les sujets ayant une valeur spécifique pour ce champ personnalisé (par exemple, obtenir la liste de tous les sujets où fun_level = ‘super-duper-fun’).
J’ai envisagé d’utiliser un ajax("/search") pour cela, mais je n’ai pas encore réussi à le faire fonctionner.
Une autre méthode que j’ai envisagée consiste à utiliser Rails classique : créer un contrôleur et, lorsque j’accède à un chemin spécifique (/fun_levels/:fun_level), appeler la méthode show suivante :
def show
respond_to do |format|
format.json { render json: Topic.where(fun_level: 'super-duper-fun') }
end
end
Ensuite, j’appelle ajax("/fun_levels/super-duper-fun.json")…
Cette stratégie de méthode show dans le contrôleur et d’appel AJAX fonctionne si je cherche des sujets basés sur un identifiant, un titre, etc. Mais lorsque j’utilise le code ci-dessus — Topic.where(fun_level: 'super-duper-fun') — cela renvoie une erreur de serveur interne. Et les journaux indiquent :
ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column topics.fun_level does not exist LINE 1: ... "topics" WHERE "topics"."deleted_at" IS NULL AND "topics"."...
Existe-t-il un moyen de récupérer des sujets basés sur un champ personnalisé en utilisant une méthode de contrôleur, comme je l’ai montré ci-dessus ? (par exemple : { render json: Topic.where(fun_level: 'super-duper-fun') })