Comment je devrais entrer mes index multicolum qui contiennent des fonctions dans schema.rb?
Par exemple, cela ne fonctionne pas: P>
add_index "temporary_events", ["templateinfoid", "campaign", "date(gw_out_time)", "messagetype"], :name => "temporary_events_campaign_tinfoid_date_messagetype"
3 Réponses :
La méthode intégrée ActiveCord pour créer des index ( Notez que l'utilisation de add_index code>) ne prend pas en charge les fonctions ni aucune autre fonctionnalité plus avancée. Au lieu de cela, vous pouvez utiliser
exécuter code> pour créer l'index avec SQL:
exécuter code> dans les migrations peut être problématique si vous n'utilisez pas le format SQL Schema (
config.active_record.schema_format =: SQL code>). Pour plus d'informations, recherchez Schema_Format . P> P>
Pour rendre cette migration réversible, ajoutez simplement à down code>:
supprimer_index: temporaire_events,: nom => "temporaire_events_campaign_tinfoid_date_messageType" code>
J'ai pu obtenir des index fonctionnels hors des rails (3.1.3) en supprimant un couple garde-garde! Je devais faire mes propres noms d'index, bien que: < / p> (Vous n'avez probablement pas besoin de citations autour de vos noms de colonne d'index, sauf si vous faites quelque chose d'insensé comme mettre des espaces ou des personnages étranges.) P> (Vous êtes probablement bien avec les messages d'erreur Postgres lors de la tentative de restauration des index inexistants.) P> p>
Si vous utilisez pg_power gem ( https://github.com/tmxcredit/pg_power ), Vous pouvez le faire de la manière suivante:
add_index(:comments, 'dmetaphone(author)', :using => 'gist')
Le repo a été supprimé. Le joyau n'est pas maintenu depuis 2014. Il y a probablement une copie / fourche du repo original à: Github.com/ sfate / pg_power