Even een kort vraagje tussendoor, ik heb een simpele user-controller waarmee ik users kan aanmaken, bewerken en verwijderen.
Bij het aanmaken is een een password verplicht, die wordt gehasht en in de db gezet.
Bij het bewerken gaat het echter mis. Je moet dan een nieuwe wachtwoord invoeren, doe je dat niet krijg je de error dat het verplicht is (logisch), terwijl je soms gewoon geen nieuw wachtwoord wil opgeven en het oude behouden.
Dus hoe zorg ik dat als er geen wachtwoord opgegeven word die eigenschap gewoon overgeslagen word?
Even wat relevante code:
De update-functie uit de controller:
code:
De relevante code uit m'n model (plain_password is het password zoals die uit de form-submit komt):
code:
Ik hoop dat het een beetje duidelijk is...
Bij het aanmaken is een een password verplicht, die wordt gehasht en in de db gezet.
Bij het bewerken gaat het echter mis. Je moet dan een nieuwe wachtwoord invoeren, doe je dat niet krijg je de error dat het verplicht is (logisch), terwijl je soms gewoon geen nieuw wachtwoord wil opgeven en het oude behouden.
Dus hoe zorg ik dat als er geen wachtwoord opgegeven word die eigenschap gewoon overgeslagen word?
Even wat relevante code:
De update-functie uit de controller:
code:
1
2
3
4
5
6
7
8
| def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
flash[:notice] = 'User was successfully updated.'
redirect_to :action => 'show', :id => @user
else
render :action => 'edit'
end
end |
De relevante code uit m'n model (plain_password is het password zoals die uit de form-submit komt):
code:
1
2
3
4
5
6
7
8
9
10
11
| attr_accessor :plain_password
attr_accessible :username, :plain_password
validates_uniqueness_of :username
validates_presence_of :username, :plain_password
def before_create
self.md5_password = User.hash_password(self.plain_password)
self.registration_date = Time.now
end
def before_update
self.md5_password = User.hash_password(self.plain_password)
self.registration_date = Time.now
end |
Ik hoop dat het een beetje duidelijk is...
