I would also like to see a noisy failure on attempted update, or the option
of one.

A good approach would be to add an option to the attr_readonly call to
support raise on attempted update. The default behavior could be switched
in a later release if desired.

On Sat, Apr 22, 2017 at 14:23 Chris Stadler <chrisstad...@gmail.com> wrote:

> Currently, updates to read-only attributes fail silently. For example:
>
> class ReadOnly < ActiveRecord::Base
>   attr_readonly :name
> end
>
> record = ReadOnly.create(name: "original")
> record.update(name: "changed") # true
> record.reload.name # "original"
>
>
> This behavior is highly unexpected to me because it provides no feedback
> that the updates were not persisted, a significant exception to the normal
> behavior of #update and #save.
>
> Raising an error whenever an update is attempted, or treating
> attr_readonly as a validation both seem like good options to me. I've
> attempted to implement the former (mostly because it was simpler) here:
> https://github.com/CJStadler/rails/commit/3fe8a29429a3dade8877513db65385
> 1b7a43333d.
>
> I realize this would be a breaking change and can't be undertaken lightly,
> but the current behavior feels like a big "gotcha", and one that's
> difficult to debug.
>
> Thanks!
> Chris Stadler
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-core+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-core@googlegroups.com.
> Visit this group at https://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to