1
0
Fork 0
mirror of https://github.com/paper-trail-gem/paper_trail.git synced 2022-11-09 11:33:19 -05:00
Commit graph

5 commits

Author SHA1 Message Date
Chris Barton
e1f94d4597 Maps enums to database values before storing in object_changes
Keep consistency between versions with regard to `changes` and
`object_changes` and how enum columns store their values.

Before, `changes` would map the changed attributes enum columns to the database
values (integer values). This allows reifying that version to maintain the
integrity of the enum. It did not do so for `object_changes` and thus, `0`
for non-json columns, and the enum value for json columns would be stored instead.
For the non-json columns, it mapped any non-integer enum value to `0` because
during serialization that column is an `integer`.  Now this is fixed,
so that `object_changes` stores the enum mapped value.

Here is an example:

```ruby
class PostWithStatus < ActiveRecord::Base
  has_paper_trail
  enum status: { draft: 0, published: 1, archived: 2 }
end

post = PostWithStatus.new(status: :draft)
post.published!
version = post.versions.last

 # Before
version.changeset #> { 'status' => ['draft', 'draft'] } (stored as [0, 0])

 # After
version.changeset #> { 'status' => ['draft', 'published'] } (stored as [0, 1])
```
2016-03-11 22:11:59 -08:00
Jared Beck
8980f08d0e Fix Style/StringLiterals: Use double quotes 2016-03-05 17:07:32 -05:00
Jared Beck
10941c8459 Fix Style/HashSyntax 2016-02-15 22:32:40 -05:00
Ben Atkins
716c3e0fb5 Use RSpec 3 for testing; Update syntax in spec suite for RSpec 3 2014-10-09 15:04:17 -04:00
Ben Atkins
d9cf951dae Only run tests for ActiveRecord::Enum when it is defined 2014-06-17 11:40:31 -04:00