Skip to content

Conversation

@alecho
Copy link

@alecho alecho commented Mar 2, 2021

No description provided.

ekampp and others added 18 commits July 9, 2020 11:09
* Add total records to pagination

* Spec for total records
Allow builds sans git.
`#count` will always execute an SQL COUNT query whereas `#size` will
check if the records are already loaded (and then call `#length`). It
only executes a count when necessary.

See https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size
* Remove hard coded maximum per-page limit of 30.

* Don't include total in pagination links.

* Wrap default per_page in a method.

* Update readme with jsonapi_page_size example.

* Skip :records in pagination with next.
Starting with Rails 6.1 ActiveModel::Error is an actual class:

> Active Model's errors are now objects with an interface that allows
> your application to more easily handle and interact with errors thrown
> by models. The feature[1] includes a query interface, enables more
> precise testing, and access to error details.
>
> [1] rails/rails#32313

As a result of this `resource.details` looks slightly different than in
previous versions and notably doesn't contain `:message` anymore, if
`object.errors.add(:something, message: 'some error')` was used to
specify a validation error.
https://github.com/rails/rails/blob/2a7ff0a5f54979b14b19f827c99295297dda411d/activemodel/lib/active_model/error.rb#L149

From the test suite:
```
note.errors.add(:title, message: 'has typos') if note.errors.key?(:title)
```

Rails 6.0:
```
{
  :title=>[{:error=>:invalid, :value=>"BAD_TITLE"},
           {:error=>{:message=>"has typos"}}],
  :quantity=>[{:error=>:less_than, :value=>109, :count=>100}]
}
```

Rails 6.1:
```
{
  :title=>[{:error=>:invalid, :value=>"BAD_TITLE"},
           {:error=>:invalid}],
  :quantity=>[{:error=>:less_than, :value=>100, :count=>100}]
}
```

The patch addresses this change by merging the error.message into its detail.
Due to the change in b019536 the validation error message for a required
field changes from "$x can't be blank" to "$x must exist".
* Add Ruby 3.0 to test matrix

* Exclude Ruby 3 + Rails 5

Rails 5 doesn't support Ruby 3
…tas#40)

* always call jsonapi_page_size method on pagination enabled requests

pass the per_page_param to the jsonapi_page_size method

* pass pagination to jsonapi_page_size and handle string-to-int conversion in jsonapi_page_size

* update readme to reflect changes

* fix woring
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants