2011-06-30 2 views
3

Je souhaite afficher une image d'avatar par défaut si quelqu'un n'a pas ajouté de photo. Je suppose que je dois soit faire un getter personnalisé dans le modèle ou un assistant.Ruby on Rails: Getter personnalisé ou assistant personnalisé

Si je ne le getter serait-il ressembler à quelque chose comme ceci:

def avatar_url 
    "default_url" unless self.avatar 
end 
+0

Utilisez-vous carrierwave petit bijou? –

Répondre

6

Utilisez la méthode read_attribute pour détecter la présence.

def avatar 
    read_attribute("avatar") || default_avatar 
end 
+0

Question à ce sujet, avatar est la valeur réelle dans la base de données, j'allais ajouter une propriété supplémentaire au modèle de avatar_url qui renvoyait un défaut s'il y en a un, sinon renvoie une valeur de chaîne – Jhorra

+0

C'est ce que fait cette méthode d'avatar. Il intercepte l'appel à l'attribut et renvoie la valeur de la base de données si elle n'est pas nulle, sinon elle renvoie 'default_avatar'. –

0

Une autre solution possible consiste à définir la valeur par défaut au niveau de la base de données à l'aide d'une migration. De cette façon, vous ne devez rien faire de spécial pour la situation par défaut.

La migration pourrait ressembler à:

change_table :users do |t| 
    t.string :avatar, :default => 'default_url' 
end 

De: http://guides.rubyonrails.org/migrations.html

Questions connexes