attr_readonly(*attributes) public

Attributes listed as readonly will be used to create a new record. Assigning a new value to a readonly attribute on a persisted record raises an error.

By setting config.active_record.raise_on_assign_to_attr_readonly to false, it will not raise. The value will change in memory, but will not be persisted on save.

Examples

class Post < ActiveRecord::Base
  attr_readonly :title
end

post = Post.create!(title: "Introducing Ruby on Rails!")
post.title = "a different title" # raises ActiveRecord::ReadonlyAttributeError
post.update(title: "a different title") # raises ActiveRecord::ReadonlyAttributeError
Show source
Register or log in to add new notes.
September 9, 2015
1 thank

Warning: prevents persistence but doesn't prevent setting

For example:

class Widget < ActiveRecord::Base
  attr_readonly :key
end
w = Widget.create! key: 'foo'
w.update! key: 'bar'
w.key #=> 'bar'
w.reload.key #=> 'foo'