Skip to content

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

ruby
class MonModele < ActiveRecord::Base
  extend Submit64::MetadataProvider

  def self.submit64_form_builder
    {
      sections: [
        fields: [:nom_de_ma_relation]
      ]
    }
  end

end



Lignes à séléctionnées

Cette méthode permet de définir des filtres sur les lignes de l'association.

ruby
class MonModele < ActiveRecord::Base
  extend Submit64::MetadataProvider

  def self.submit64_association_filter_rows
    where(libelle: "Bonsoir")
  end

end



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" :

ruby
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.

ruby
class MonModele < ActiveRecord::Base
  extend Submit64::MetadataProvider

  def self.submit64_association_select_columns
    [:id, :libelle]
  end

end

Note

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.

ruby
class MonModele < ActiveRecord::Base
  extend Submit64::MetadataProvider

  def submit64_association_label
    "#{id} : #{libelle}"
  end

end

Note

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.