2010-10-27 21 views

Répondre

3
self.accepted = true 
+0

J'ai essayé que ça ne fonctionnait pas ... alors je suis confus. En tout cas merci. – rtacconi

+2

Il convient de souligner que la raison en est que, sans le 'self.',' accepted' est interprété comme une variable locale dans 'incoming_acceptation', donc l'affectation ne change pas la valeur de l'attribut. – mikej

4

Je recommande:

def incoming_acceptation(incoming_code) 
    update_attribute(:accepted, true) if invite_code == incoming_code 
end 

update_attribute va changer et enregistrer cet attribut. Il y a aussi update_attributes (notez le s) qui accepte Hash pour modifier plusieurs attributs à la fois:

@obj.update_attributes(:accepted => true, :accepted_at => Time.now) 

Note: update_attribute et update_attributes à la fois retour true lorsque le changement et enregistrer ont réussi, comme dans votre exemple.