Associations
Lors de la génération d'un champ d'association sur une autre table, il est possible de définir des logiques supplémentaires, comme l'affichage des données, les filtres, etc.
Important
Les relations polymorphiques ne sont actuellement pas pris en charge et donc ignorées
Champ de relation dans le formulaire
class MonModele < ActiveRecord::Base
extend Submit64::MetadataProvider
def self.submit64_form_builder
{
sections: [
fields: [:nom_de_ma_relation]
]
}
end
endLignes à séléctionnées
Cette méthode permet de définir des filtres sur les lignes de l'association.
class MonModele < ActiveRecord::Base
extend Submit64::MetadataProvider
def self.submit64_association_filter_rows
where(libelle: "Bonsoir")
end
endColonnes à filtrées (pour la recherche)
Cette méthode permet de définir sur quelles colonnes le filtre de recherche côté client agit. Chaque colonne définie sera évalué indépendamment des autres. Exemple avec un filtre de recherche égal à "bonjour" :
class MonModele < ActiveRecord::Base
extend Submit64::MetadataProvider
def self.submit64_association_filter_columns
[:id, :libelle, :description]
end
end
# SQL généré :
#
# WHERE ...
# AND (
# id ILIKE 'bonjour' OR
# libelle ILIKE 'bonjour' OR
# description ILIKE 'bonjour'
# )Note
Si cette méthode n’est pas définie, Submit64 filtre automatiquement et si possible les colonnes id et label.
Note
Ces filtres s'appliquent après ceux définis par submit64_association_filter_rows.
Colonnes à séléctionnées (pour la recherche)
La méthode submit64_association_select_columns permet d'éviter de sélectionner l'entièreté de la ligne en base et de définir une liste arbitraire de colonnes.
class MonModele < ActiveRecord::Base
extend Submit64::MetadataProvider
def self.submit64_association_select_columns
[:id, :libelle]
end
endNote
Si cette méthode n’est pas définie, Submit64 sélectionne automatiquement toutes les colonnes.
Libellé
Lors de la sélection d'une association côté client, la liste affiche un libellé pouvant être surchargée coté serveur.
class MonModele < ActiveRecord::Base
extend Submit64::MetadataProvider
def submit64_association_label
"#{id} : #{libelle}"
end
endNote
Cette méthode doit être accordée avec les colonnes définies dans submit64_association_select_columns.
Note
Cette méthode ne doit pas être statique.
Note
Si cette méthode n'est pas définie, Submit64 essaie les méthodes label, id, et primary_key dans cet ordre.
Important
Cette méthode est appelée à chaque ligne éligible à l'association. Il ne faut donc pas y mettre de code lourd ni effectuer de requête pour éviter des problèmes de performance.