xaver23
xaver23

Reputation: 1321

check if the value of a field changed in a before_update filter

I have a database field where I want to store my password. In a before_create filter in my model I call a encryption function and save from clear text to encrypted text.

I want now to use the before_update also for encryption, but only if the value has changed. How can I write a condition for checking if a field value has changed?

Upvotes: 7

Views: 13498

Answers (2)

hurikhan77
hurikhan77

Reputation: 5931

Since you usually do not store the password in the model using a field which you would expose to the form, it should be sufficient to only update it unless password.blank? and have the real password in a field "hashed_password" which you won't expose to the form.

Thanks to Ben (see below) for pointing out to additionally protect your encrypted password with attr_protected so it cannot be directly accessed/updated from the form. +1

Upvotes: 4

Farrel
Farrel

Reputation: 2381

If the field is called name then

object.name_changed?

will return true.

Upvotes: 27

Related Questions