9
votes

Rails Postgres Index fonctionnels

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"


0 commentaires

3 Réponses :


18
votes

La méthode intégrée ActiveCord pour créer des index ( add_index ) ne prend pas en charge les fonctions ni aucune autre fonctionnalité plus avancée. Au lieu de cela, vous pouvez utiliser exécuter pour créer l'index avec SQL: xxx

Notez que l'utilisation de exécuter dans les migrations peut être problématique si vous n'utilisez pas le format SQL Schema ( config.active_record.schema_format =: SQL ). Pour plus d'informations, recherchez Schema_Format .


1 commentaires

Pour rendre cette migration réversible, ajoutez simplement à down : supprimer_index: temporaire_events,: nom => "temporaire_events_campaign_tinfoid_date_messageType"



5
votes

J'ai pu obtenir des index fonctionnels hors des rails (3.1.3) en supprimant un couple garde-garde! XXX

Je devais faire mes propres noms d'index, bien que: < / p> xxx

(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.)

(Vous êtes probablement bien avec les messages d'erreur Postgres lors de la tentative de restauration des index inexistants.)


0 commentaires

1
votes

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')


1 commentaires

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