Livesearch de personne ne fonctionne pas

Bonjour,
J’ai créé une personne et j’aimerai la voir dans la recherche.
Malheureusement le live search ne ramène rien.
Côté client j’ai ca :

.

Du côté de Postgres j’ai ça :
ERROR: function f_unaccent(character varying) does not exist at character 2295
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
STATEMENT:

SELECT "users"."id" AS t0_r0,
 "users"."email" AS t0_r1,
 "users"."encrypted_password" AS t0_r2,
 "users"."reset_password_token" AS t0_r3,
 "users"."reset_password_sent_at" AS t0_r4,
 "users"."remember_created_at" AS t0_r5,
 "users"."sign_in_count" AS t0_r6,
 "users"."current_sign_in_at" AS t0_r7,
 "users"."last_sign_in_at" AS t0_r8,
 "users"."current_sign_in_ip" AS t0_r9,
 "users"."last_sign_in_ip" AS t0_r10,
 "users"."confirmation_token" AS t0_r11,
 "users"."confirmed_at" AS t0_r12,
 "users"."confirmation_sent_at" AS t0_r13,
 "users"."unconfirmed_email" AS t0_r14,
 "users"."failed_attempts" AS t0_r15,
 "users"."unlock_token" AS t0_r16,
 "users"."locked_at" AS t0_r17,
 "users"."created_at" AS t0_r18,
 "users"."updated_at" AS t0_r19,
 "users"."is_allow_contact" AS t0_r20,
 "users"."group_id" AS t0_r21,
 "users"."stp_customer_id" AS t0_r22,
 "users"."username" AS t0_r23,
 "users"."slug" AS t0_r24,
 "users"."is_active" AS t0_r25,
 "users"."invoicing_disabled" AS t0_r26,
 "users"."provider" AS t0_r27,
 "users"."uid" AS t0_r28,
 "users"."auth_token" AS t0_r29,
 "users"."merged_at" AS t0_r30,
 "profiles"."id" AS t1_r0,
 "profiles"."user_id" AS t1_r1,
 "profiles"."first_name" AS t1_r2,
 "profiles"."last_name" AS t1_r3,
 "profiles"."gender" AS t1_r4,
 "profiles"."birthday" AS t1_r5,
 "profiles"."phone" AS t1_r6,
 "profiles"."interest" AS t1_r7,
 "profiles"."software_mastered" AS t1_r8,
 "profiles"."created_at" AS t1_r9,
 "profiles"."updated_at" AS t1_r10,
 "profiles"."facebook" AS t1_r11,
 "profiles"."twitter" AS t1_r12,
 "profiles"."google_plus" AS t1_r13,
 "profiles"."viadeo" AS t1_r14,
 "profiles"."linkedin" AS t1_r15,
 "profiles"."instagram" AS t1_r16,
 "profiles"."youtube" AS t1_r17,
 "profiles"."vimeo" AS t1_r18,
 "profiles"."dailymotion" AS t1_r19,
 "profiles"."github" AS t1_r20,
 "profiles"."echosciences" AS t1_r21,
 "profiles"."website" AS t1_r22,
 "profiles"."pinterest" AS t1_r23,
 "profiles"."lastfm" AS t1_r24,
 "profiles"."flickr" AS t1_r25,
 "profiles"."job" AS t1_r26 FROM "users" INNER JOIN "profiles" ON "profiles"."user_id" = "users"."id" INNER JOIN "users_roles" ON "users_roles"."user_id" = "users"."id" INNER JOIN "roles" ON "roles"."id" = "users_roles"."role_id" LEFT JOIN "subscriptions" ON "subscriptions"."user_id" = "users"."id" WHERE (users.is_active = 'true' AND roles.name = 'member') AND (lower(f_unaccent(profiles.first_name)) ~ regexp_replace('isa',
 E'\\s+',
 '|') OR lower(f_unaccent(profiles.last_name)) ~ regexp_replace('isa',
 E'\\s+',
 '|'))

Bon ben création de cette fonction sur la base de données du moment (fablab_production)
CREATE OR REPLACE FUNCTION f_unaccent(text) RETURNS text AS $func$ SELECT public.unaccent('public.unaccent', $1) -- schema-qualify function and dictionary $func$ LANGUAGE sql IMMUTABLE;

Salut,
Cette fonction aurait du être créé lors de l’appel à

rake db:setup

Si cela n’a pas été le cas, il est probable que cela vienne d’un problème de droits (comme décrit ici), auquel cas une erreur a du être indiqué lors de l’exécution de la commande.

Et bin j’ai du moi aussi créer l’extension avec votre code et ça marche maintenant.
Je suis d’abord rentré dans le bash du container de postgres avec ca :
docker exec -ti core_postgres_1 psql -h localhost -p 5432 fablab_production postgres

Et après j’ai lancé la commande de maikodk
Merci :wink:

Bonjour,
J’ai le même soucis avec la recherche d’utilisateurs.

Je suis passé par docker-compose pour l’installation, tout s’est passé sans soucis.

J’ai donc tenté d’ajouter la fonction de maikodk à la base de donnée sur postgres mais sans succès. Je n’ai aucun retour et ne connaissant pas postgres, je ne sais pas où regarder pour trouver un éventuel rapport d’erreur dans un log (à part l’erreur 500 dans les log de l’app).

L’utilisateur postgres est déjà superuser.

Avez vous une piste pour résoudre le problème ?
Merci.

Salut,

TL;DR

Lors d’une installation, ne plus lancer rake db:setup mais la suite de commandes :

  • rake db:create
  • rake db:migrate
  • rake db:seed

Explications

Jusqu’à présent, lors d’une installation de fab-manager, le fichier README.md indiquait qu’il fallait employer la commande rake db:setup pour initialiser la base de données.

Toutefois, suite à une investigation j’ai découvert que rake db:setup n’exécute pas l’ensemble des migrations, mais utilise le schema consolidé par rails dans le fichier schema.rb pour recréer directement la base de données.

Ceci pose problème car certaines migrations exécutent directement du code SQL pour interagir avec Postgre et créer, entre autre, la fonction PL/pgSQL f_unaccent, ainsi que des indexes en base pour accélérer certaines requêtes.

J’ai donc mis à jour le README avec les nouvelles instructions ci-dessus pour que ce problème ne se produise plus lors d’une nouvelle installation.

Ces instructions seront fusionnées dans la branche master lors de la prochaine release (2.5.0), en attendant je ne saurais trop vous conseiller de suivre les instructions de la branche dev pour une nouvelle installation.

Source: Active Record Migrations — Ruby on Rails Guides

Merci de ta réponse, tout est rentré dans l’ordre de mon côté. le fabmanager fonctionne de nouveaux sans accro.