PaperTrail gem issue with activemodel (and MS SQL)

56 Views Asked by At

I'm trying to set up PaperTrail gem to work with Rails 7 (Ruby 3.2.2) and MS SQL database. It looks like something is wrong with serializing/deserializing dates when using JSON as PaperTrail's serializer:

In application.rb I have:

PaperTrail.serializer = PaperTrail::Serializers::JSON

PaperTrail version in Gemfile:

gem 'paper_trail', '~> 14.0'

The error I get:

irb(main):012:0> Project.last.versions.last.changeset
  Project Load (5.7ms)  EXEC sp_executesql N'SELECT [projects].* FROM [projects] ORDER BY [projects].[id] DESC OFFSET 0 ROWS FETCH NEXT @0 ROWS ONLY', N'@0 int', @0 = 1  [["LIMIT", nil]]
  PaperTrail::Version Load (4.4ms)  EXEC sp_executesql N'SELECT [versions].* FROM [versions] WHERE [versions].[item_id] = @0 AND [versions].[item_type] = @1 ORDER BY [versions].[created_at] DESC, [versions].[id] DESC OFFSET 0 ROWS FETCH NEXT @2 ROWS ONLY', N'@0 bigint, @1 nvarchar(4000), @2 int', @0 = 1, @1 = N'Project', @2 = 1  [["item_id", nil], ["item_type", nil], ["LIMIT", nil]]
  Project Load (3.4ms)  EXEC sp_executesql N'SELECT [projects].* FROM [projects] WHERE [projects].[id] = @0 ORDER BY [projects].[id] ASC OFFSET 0 ROWS FETCH NEXT @1 ROWS ONLY', N'@0 bigint, @1 int', @0 = 1, @1 = 1  [["id", nil], ["LIMIT", nil]]
/usr/local/bundle/gems/activemodel-7.0.4.3/lib/active_model/type/date_time.rb:40:in `value_from_multiparameter_assignment': Provided hash {"value"=>"07-25-2023 07:28:02.245688", "type"=>{"precision"=>6, "scale"=>nil, "limit"=>nil}} doesn't contain necessary keys: [1, 2, 3] (ArgumentError)

            raise ArgumentError, "Provided hash #{values_hash} doesn't contain necessary keys: #{missing_parameters}"
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
irb(main):013:0>

Any ideas what might be wrong?

0

There are 0 best solutions below