Mysql
 sql >> Base de données >  >> RDS >> Mysql

quand j'utilisais l'alias find_by_sql, je me suis trompé

Vous êtes en train de charger des Books de la base de données, AREL essaie donc de mapper votre instruction select sur le modèle. Dans ce cas, il mappe la date sur borrow_date attribut et le convertit en un objet Date. La mise en forme d'origine que vous avez sélectionnée n'est alors plus pertinente car elle a été analysée dans un objet qui a ses propres règles d'impression de la date.

Votre deuxième sélection fonctionne car il n'y a probablement aucun attribut de ce nom sur votre Book model, il ne peut donc pas être mappé à un type spécifique, donc String est utilisé.

Vous pouvez simplement ajouter une fonction comme formatted_borrow_date à votre modèle ou utilisez un assistant pour qu'il formate le borrow_date en utilisant des méthodes ruby ​​pour éviter le SQL codé en dur et le formatage de la date.