ActiveRecord Read Only Model
source link: https://www.devroom.io/2008/08/17/activerecord-read-only-models/?utm_campaign=Feed%3A+ariejan+%28ariejan%7Cdevroom.io%29
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
ActiveRecord Read Only Model
ActiveRecord is great in providing CRUD for your data models. In some cases, however, it’s necessary to prevent write access to these models. The data may be provided by an external source and should only be used as a reference in your application, for example.
I’m going to show you how you can easily mark a Model as read only all the time. In this example I have a Item model like this:
class Item < ActiveRecord::Base
end
ActiveRecord::Base provides two methods that may be of interest here:
def readonly!
@readonly = true
end
def readonly?
defined?(@readonly) && @readonly == true
end
The first method sets the record to read only. This is great, but we don’t want to set the read only property every time we load a model. The second, readonly?, return true if the object is read only or false if it isn’t.
So, if we return true on the readonly? method, our object is marked as read only. Great!
class Item < ActiveRecord::Base
def readonly?
true
end
end
That is all! All Item objects are now marked as read only all the time. If you try to write to the model, you’ll receive an error.
item = Item.find(:first)
item.update_attributes(:name => 'Some item name')
=> ActiveRecord::RecordReadOnly
My site is free of ads and trackers. I record privacy-respecting usage statistics with Fathom.
Was this post helpful to you? Why not ☕ Buy me a coffee
Copyright © 1999-2020 Ariejan de Vroom <[email protected]>
Live now; make now always the most precious time. Now will never come again.
– Jean-Luc Picard
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK