Ajouter un modèle à partir du générateur
$ rails g qis ModelName user:references
Puis au besoin, ajouter un sous modèle pour la traduction
$ rails g Model ModelNameLang name:string
Ajouter un onglet et des menus en admin
- Définir un admin_space (appelé ici exemple)
- Ajouter un fichier _exemple.html.haml dans app/views/admin/admin_spaces avec les raccourcis voulus
- Ajouter un menu (une div .element) dans app/views/layout/admin.html.haml
- ajouter un icône
- renommer les classes en .cat#big_cat_exemple
- ajouter une couleur dans app/assets/stylesheets/admin.scss, variable $big_colors
- pointer le lien vers un controller voulu
- Ajouter dans tous les controllers sollicités (ceux pointés dans le fichier _exemple.html.haml) la méthode :
def admin_space
@admin_space = "exemple"
end
Erreurs courantes
undefined method `qi_table_order' for #Class:0x00007f0278093f40
La méthode acts_as_sorting n'est pas définie dans le modèle
Système de cache
Le système est avant tout une convention, pour le naming des champs et des méthodes.
Exemple, on veut stocker en cache le prix (price) dans le modèle PCustomer.
class Pcustomer
[...]
acts_as_caching fields: [:price]
end
on crée les champs cc_price et ac_price dans la table p_customers cc = cache ac = archive
Par convention, à chaque enregistrement le champ cc_price sera enregistré avec la valeur de la méthode ca_price (ca = calcul) sauf si le champ ac_price est rempli, dans ce cas ce sera cette valeure qui sera enregistrée dans le champ cc également.
Dans le cas du prix, la méthode "ca_price" ira par exemple chercher le prix actuel dans la table membership.
Si on veut donner la main pour indiquer un prix manuellement, qui vient écraser le prix calculer, on créera par convention le champ ct_price (ct = custom) et on commencera la méthode ca_price par un :
def ca_price
return self.ct_price if self.ct_price?
methode de calcul
end
Toutes ces étapes permettent d'appeler la méthode price sans se soucier des calculs de cache dans le modèle.