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
Définir un 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
endDéfinir les lignes à 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
endDéfinir les colonnes à 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.
Définir les 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.
Définir un 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
Si cette méthode n’est pas définie, Submit64 sélectionne automatiquement toutes les colonnes. Cette méthode doit être en accord avec les colonnes définies dans submit64_association_select_columns. Si vous n'avez pas défini submit64_association_select_columns, toutes les colonnes seront alors disponibles.
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.
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.