68 lines
2.1 KiB
Markdown
68 lines
2.1 KiB
Markdown
## 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
|
|
|
|
1. Définir un admin_space (appelé ici exemple)
|
|
2. Ajouter un fichier _exemple.html.haml dans app/views/admin/admin_spaces avec les raccourcis voulus
|
|
3. 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
|
|
4. Ajouter dans tous les controllers sollicités (ceux pointés dans le fichier _exemple.html.haml) la méthode :
|
|
```ruby
|
|
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.
|
|
|
|
```ruby
|
|
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 :
|
|
|
|
```ruby
|
|
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.
|