updating attribute in model

I'm trying to make a change to a field in the model whenever someone accesses it and it's incorrect. So I have the following in my ActiveRecord class:

def status   prev_status = read_attribute(:status)   if end_date < Date.today     update_attribute(:status, "Expired")   end   status end

I'm getting a "stack level too deep error". Any suggestions on how to fix and the correct approach to this.

thanks

Hi Allen,

I'm not sure, but this seems to be a before or after save filter, if it's before_save, instead of update_attribute, just call write_attribute, when the model is saved it will automatically save this new value, if it's an after filter, make it a before one.

I'm trying to make a change to a field in the model whenever someone accesses it and it's incorrect. So I have the following in my ActiveRecord class:

def status prev_status = read_attribute(:status) if end_date < Date.today    update_attribute(:status, "Expired") end status end

I'm getting a "stack level too deep error". Any suggestions on how to fix and the correct approach to this.

You're calling status from within status so it's recursing forever.

Replace that last status with read_attribute(:status) after perhaps reloading the object to ensure you've got the latest.

Philip Hallstrom wrote:

end

I'm getting a "stack level too deep error". Any suggestions on how to fix and the correct approach to this.

You're calling status from within status so it's recursing forever.

Replace that last status with read_attribute(:status) after perhaps reloading the object to ensure you've got the latest.

Yeah that is was. Simple calling

'read_attribute(:status)' instead of 'status' did the trick. thanks