# How to prevent a value from ever changing

**URL:** <https://www.ruby-forum.com/t/how-to-prevent-a-value-from-ever-changing/133584>\
**Category:** Rails\
**Created:** [April 1, 2008, 10:02pm UTC](https://www.ruby-forum.com/t/how-to-prevent-a-value-from-ever-changing/133584 "2008-04-01T22:02:32Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ddancer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ecb155/32.png) [@ddancer](https://www.ruby-forum.com/u/ddancer)\
**Post date:** [April 1, 2008, 10:02pm UTC](https://www.ruby-forum.com/t/how-to-prevent-a-value-from-ever-changing/133584/1 "2008-04-01T22:02:32Z")

</div>

problem: within the DB there is a special “empty” string, this string  
must never be changed.

how to best enforce this rule?

Currently I have…

* * *

# override the string\_value setter,

# to control empty string from ever being overwritten

# ensure that the single empty string is never modified

def string\_value=(sv)  
if self[:string\_value].blank? && !self.new\_record?  
raise “Empty String May Not Be Modified”  
#errors.add(:string\_value, “Empty String May Not Be Modified”)  
else  
self[:string\_value] = sv  
end  
end

* * *

looking for better / more elegant ideas

thanks in advance

---

<div class="post-metadata">

**Author:** ![ddancer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ecb155/32.png) [@ddancer](https://www.ruby-forum.com/u/ddancer)\
**Post date:** [April 1, 2008, 10:48pm UTC](https://www.ruby-forum.com/t/how-to-prevent-a-value-from-ever-changing/133584/2 "2008-04-01T22:48:21Z")

</div>

> problem: within the DB there is a special “empty” string, this string  
> must never be changed.
> 
> how to best enforce this rule?

[http://agilewebdevelopment.com/plugins/attrlocked](http://agilewebdevelopment.com/plugins/attrlocked)

Or something similar to that maybe…

> Currently I have…
> 
> * * *
> 
> # override the string\_value setter,
> 
> # to control empty string from ever being overwritten
> 
> # ensure that the single empty string is never modified
> 
> def string\_value=(sv)  
> if self[:string\_value].blank? && !self.new\_record?  
> raise “Empty String May Not Be Modified”  
> #errors.add(:string\_value, “Empty String May Not Be Modified”)
