diff options
author | Sean Griffin <sean@thoughtbot.com> | 2015-01-10 11:57:14 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2015-01-10 12:07:46 -0700 |
commit | 4d5e6607899832bde1365bdd4f7617a24bca4561 (patch) | |
tree | ff73a81700a04e57a16d7edef778c55207e70e61 /activerecord/lib/active_record/attribute_methods | |
parent | 89470bbc5ea4e1375dc948b0629a419c1ad5c4f5 (diff) | |
download | rails-4d5e6607899832bde1365bdd4f7617a24bca4561.tar.gz rails-4d5e6607899832bde1365bdd4f7617a24bca4561.tar.bz2 rails-4d5e6607899832bde1365bdd4f7617a24bca4561.zip |
Don't attempt to save dirty attributes which are not persistable
This sets a precident for how we handle `attribute` calls, which aren't
backed by a database column. We should not take this as a conscious
decision on how to handle them, and this can change when we make
`attribute` public if we have better ideas in the future.
As the composed attributes API gets fleshed out, I expect the
`persistable_attributes` method to change to
`@attributes.select(&:persistable).keys`, or some more performant
variant there-of. This can probably go away completely once we fully
move dirty checking into the attribute objects once it gets moved up to
Active Model.
Fixes #18407
Diffstat (limited to 'activerecord/lib/active_record/attribute_methods')
-rw-r--r-- | activerecord/lib/active_record/attribute_methods/dirty.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/dirty.rb b/activerecord/lib/active_record/attribute_methods/dirty.rb index d5702accaf..ce7f575150 100644 --- a/activerecord/lib/active_record/attribute_methods/dirty.rb +++ b/activerecord/lib/active_record/attribute_methods/dirty.rb @@ -134,7 +134,7 @@ module ActiveRecord # Serialized attributes should always be written in case they've been # changed in place. def keys_for_partial_write - changed + changed & persistable_attribute_names end def _field_changed?(attr, old_value) |