Connaître toutes les clés disponibles dans les en-têtes et dans les variables d’environnement (pratique quand on a oublié le nom d’une clé) :
Note : fonction non récursive, se limite à un tableau bidimmensionnel
def parcourir (variable)
variable.each do |key,val|
if val.is_a? Array
val.each do |key2,val2|
@content += ' <br />' + key2.to_s + ' -> ' + val2.to_s
end
else
@content += "<br />" + key.to_s + ' -> ' + val.to_s
end
end
end
parcourir request.env
@content += '<hr />'
parcourir request.headers
Comment récupérer la dernière page qui a été consultée par l’utilisateur, sans utiliser les REFERER et surtout en prenant en compte les redirection (ce qui ne marche pas avec les referers) :
before_filter :save_referer before_filter # all other before_filters have to be placed after the save_referer ! private def save_referer if request.env['HTTP_REFERER'] && !request.env['HTTP_REFERER'].blank? session[:referer] = request.env['HTTP_REFERER'] else session[:referer] = session[:new_referer] || '' end session[:new_referer] = request.env['REQUEST_URI'] end
Vérifier qu’une string ne correspond PAS à une regex donnée :
if string !~ %r{maregex}flags
flags sont les drapeaux (i, s…)
On peut aussi remplacer %r{..} par /../ à sa convenance…
Les has_and_belongs_to_many (HABTM) multiples
Il semblerait qu’il ne soit pas possible d’en spécifier plusieurs par ligne, si on fait :
has_and_belongs_to_many :model1, :model2
Il cherche à utiliser « model2″ en tant que clé de liaison avec « model1″
Il faut donc faire :
has_and_belongs_to_many :model1
has_and_belongs_to_many :model2
Valider l’unicité d’une clé mixte (clé à plusieurs champs, « clé multiple »
Il semblerait que ce ne soit pas possible avec rails par défaut, à la place on valide une clé par rapport à un environnement fixé.
Cela se traduit par l’écriture suivante, pour une clé (field1, field2, field3) :
validates_uniqueness_of :field1, :scope => [:field2, :field3]
Mettre au pluriel :
La méthode est plurialize
Exemple :
> "mouse".pluralize
=> "mice"
Les irrégularités gérées par défaut sont assez incomplètes mais vous pouvez les améliorer en configurant je sais plus quoi :
> "tooth".pluralize
=> "tooths"
Poster un commentaire