Skip to content

Commit

Permalink
Fix the readonly section
Browse files Browse the repository at this point in the history
  • Loading branch information
lifo authored and fxn committed Aug 31, 2010
1 parent 3e78606 commit e7b1b3f
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions railties/guides/source/active_record_querying.textile
Expand Up @@ -509,22 +509,16 @@ This will return single order objects for each day, but only for the last month.

h4. Readonly Objects

To explicitly disallow modification/destruction of the matching records returned in a Relation object, you could chain the +readonly+ method as +true+ to the find call.

Any attempt to alter or destroy the readonly records will not succeed, raising an +ActiveRecord::ReadOnlyRecord+ exception. To set this option, specify it like this:

<ruby>
Client.first.readonly(true)
</ruby>

For example, calling the following code will raise an +ActiveRecord::ReadOnlyRecord+ exception:
Active Record provides +readonly+ method on a relation to explicitly disallow modification or deletion of any of the returned object. Any attempt to alter or destroy a readonly record will not succeed, raising an +ActiveRecord::ReadOnlyRecord+ exception.

<ruby>
client = Client.first.readonly(true)
client.locked = false
client = Client.readonly.first
client.visits += 1
client.save
</ruby>

As +client+ is explicitly set to be a readonly object, the above code will raise an +ActiveRecord::ReadOnlyRecord+ exception when trying to calling +client.save+ with an updated value of _visists_.

h4. Locking Records for Update

Locking is helpful for preventing race conditions when updating records in the database and ensuring atomic updates.
Expand Down

0 comments on commit e7b1b3f

Please sign in to comment.