Commit Graph

1517 Commits

Author SHA1 Message Date
Benjamin Fleischer
adf5ae27dd Note invalid JSON:API response expected in tests 2017-10-29 22:59:21 -05:00
Vedant Agarwala
4076a480b7 Removed misleading line in README
As mentioned in the `master` branch's README, master will not be release ready for now.
Fixes https://github.com/rails-api/active_model_serializers/issues/2163
2017-10-29 16:26:32 -05:00
Nate Pinsky
88367da970 Add warnings about global adapter config to docs (#2176) 2017-10-24 17:30:56 -05:00
Dennis Stumm
4d7c2457d7 Fix deserialization of polymorphic relationships (#2200)
* Classify the relationship type for polymorphic associations
2017-10-07 17:03:38 -05:00
Benjamin Fleischer
715a702f55 Merge pull request #2189 from tagliala/update-jsonapi-renderer-dependency
Update version constraint for jsonapi-renderer
2017-09-19 15:32:44 -05:00
Benjamin Fleischer
4a995955ea Merge pull request #2198 from tagliala/improve-travis-configuration
Test against latest stable Ruby and Rails versions
2017-09-19 15:31:57 -05:00
Geremia Taglialatela
ab517d1a2d Test against latest stable Ruby and Rails versions
Also skips Rails 4.1 tests against Ruby 2.4.2 and ruby-head,
because Rails 4.2.8 is the first version of the 4.x series that
officially	support Ruby 2.4.
2017-09-19 17:47:52 +02:00
Geremia Taglialatela
1c9214d041
Update version constraint for jsonapi-renderer 2017-09-19 16:57:09 +02:00
Benjamin Fleischer
6a7d864605 Fix CI on 0-10-stable (#2181)
* Loosen pry, pry-byebug depencency

```
Resolving dependencies...
byebug-9.1.0 requires ruby version >= 2.2.0, which is
incompatible with the current version, ruby 2.1.10p492
```

* Adjust nokogiri version constraint for CI

Update appveyor Ruby to 2.3 to work around:

```
Gem::InstallError: nokogiri requires Ruby version < 2.5, >= 2.2.

An error occurred while installing nokogiri (1.8.0), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.8.0'` succeeds before bundling.
```

and not 2.4 since:

https://ci.appveyor.com/project/bf4/active-model-serializers/build/1.0.1052-fix_ci/job/0q3itabsnvnxr83u

```
nokogiri-1.6.8.1-x86-mingw32 requires ruby version < 2.4, which is incompatible with the current version, ruby 2.4.1p111
```

* Include rails gem in Gemfile

(For Rails5)

In Rails5, checking for Rails::Railtie is better

* Rails5 test env requires Rails.application.class.name

rails-42d09f6b49da/railties/lib/rails/application.rb

```ruby
def secret_key_base
  if Rails.env.test? || Rails.env.development?
  Digest::MD5.hexdigest self.class.name
```

* Reformat exclude matrix to be easier to read

* Simplify jruby-travis config per rails/rails

* Organize .travis.yml per rails/rails

* Allow JRuby failure on Rails 5+; try rails-5 db adapter branch

https://github.com/jruby/activerecord-jdbc-adapter/issues/708

```
uninitialized constant ActiveRecord::ConnectionAdapters::Column::Format
```

see https://travis-ci.org/rails-api/active_model_serializers/jobs/277112008
2017-09-19 05:27:02 -04:00
Benjamin Fleischer
c2fa01624d Merge pull request #2191 from tagliala/fix-rubocop-offence
Fix RuboCop offence
2017-09-17 12:59:12 -05:00
Geremia Taglialatela
4f78319219 Fix RuboCop offence 2017-09-17 19:33:05 +02:00
Benjamin Fleischer
b1de431731 Merge pull request #2179 from drn/enumerator-exception
Fix Enumerator.new ArgumentError.
2017-08-29 10:14:25 -05:00
Darren Cheng
967ff8dcc0 Patch Enumerator.new ArgumentError. 2017-08-28 19:38:08 -07:00
Alexandre de Oliveira
1e4d117b99 Merge pull request #2149 from mecampbellsoup/more-pagination-links-by-default
Always include self, first, last pagination links
2017-06-14 15:47:30 -03:00
mecampbellsoup
402883d84f Fix Travis lint offenses 2017-06-14 13:35:00 -04:00
mecampbellsoup
e4b3224c64 Fix indentation mismatch 2017-06-14 12:53:38 -04:00
mecampbellsoup
b7442e741c Use symbolized keys for json hash
They will be converted to strings when rendered as JSON.
2017-06-14 12:52:29 -04:00
Benjamin Fleischer
1539747a59 Merge pull request #2152 from tannerj/0-10-stable
Fix dead link in docs/general/rendering
2017-06-13 20:08:29 -05:00
Joel Tanner Jones
622872ae2b Fix dead link in docs/general/rendering
The add_pageination_links.md is dead in docs/general/rendering on the
0-10-stable branch.
2017-06-13 13:28:24 -04:00
mecampbellsoup
92e9a66e97 Amend tests to always include all pagination keys 2017-06-13 12:35:55 -04:00
mecampbellsoup
16e5204eab Always include pagination keys but set null values when not needed 2017-06-13 12:09:00 -04:00
mecampbellsoup
ff71ef26eb Amend pagination controller specs 2017-06-05 18:41:15 -04:00
mecampbellsoup
d8e983604b Clarify naming of expected response w/ pagination but empty data 2017-06-05 17:51:38 -04:00
mecampbellsoup
7387266c37 Always display self, first, last pagination links 2017-06-05 17:26:41 -04:00
Christian
a89e78c655 Allow referencing sideloaded include by key. (#2136)
* If a `key` is set on the reflection use the `key` instead of `name`.
This ensures that associations with a key set are still included.
2017-05-18 15:59:14 -05:00
Benjamin Fleischer
a5ab62fd18 Merge pull request #2130 from greysteil/allow-id-overwriting
Allow serialized ID to be overwritten for belongs-to relationships
2017-05-15 09:24:41 -05:00
Grey Baker
be7ee70376 Allow serialized ID to be overwritten for belongs-to relationships
If the `id` attribute for a class isn't taken directly from the object when
serializing it, it may be desirible for other classes that serialize a
relationship with that class to overwrite the relationship IDs they serialize.

For example, suppose we have:

```(ruby)
class Repo < Model
  attributes :id, :github_id, :name
  associations :configs
end

class Config < Model
  attributes :id
  belongs_to :repo
end

class RepoSerializer < ActiveModel::Serializer
  attributes :id, :name

  has_many :update_configs

  def id
    object.github_id
  end
end

class ConfigSerializer < ActiveModel::Serializer
  attributes :id
  belongs_to :repo
end
```

In the above example, serializing a list of `Repo`s will give the `github_id`
for each one, but serializing a `Config` will give the `id` for its parent repo.

Ideally AMS would inspect the `RepoSerializer` when serializing the `Config`,
and realise it can't just output the foreign key. Unfortunately, getting the
serialization class for the child repo currently requires loading the record
(via evaluating `lazy_assocation`), and loses the performance benefit of the
existing `belongs_to?` path. Instead, I've opted to use
`read_attribute_for_serialization` instead of `object.send` to fetch the
serialized foreign key. This allows the serialized relationship ID to be
overwritten using

```(ruby)
class ConfigSerializer < ActiveModel::Serializer
  ...

  def repo_id
    object.repo.github_id
  end
end
```
2017-05-13 15:22:18 +01:00
Benjamin Fleischer
b48aeeef1e Merge branch 'master' into 0-10-stable 2017-05-01 11:04:46 -05:00
Benjamin Fleischer
dff621e174 Bump to v0.10.6 2017-05-01 10:59:14 -05:00
Benjamin Fleischer
982fe26ee8 Merge pull request #2120 from bf4/allow_customizing_relation_foreign_key
Document new reflection options; support :foreign_key [ci skip]
2017-05-01 10:56:35 -05:00
Benjamin Fleischer
ec7b5859f7 Document namespace 2017-05-01 10:25:14 -05:00
Benjamin Fleischer
96028a7b99 Document new reflection options; support :foreign_key 2017-05-01 10:18:13 -05:00
Benjamin Fleischer
af5e9d6018 Merge pull request #2104 from cassidycodes/update-docs
Update Documentation on Serializers and Rendering [ci skip]
2017-04-30 22:06:10 -07:00
Benjamin Fleischer
05cf2223cf Merge pull request #2115 from tonyta/update-readme-v0.10.5
point to correct latest version in readme [ci skip]
2017-04-30 22:03:13 -07:00
Benjamin Fleischer
004e0dc951 Merge pull request #2119 from bf4/exclude_empty_relationships
Return null resource object identifier for blank id
2017-04-30 21:45:10 -07:00
Benjamin Fleischer
73eae19b3d Return null resource object identifier for blank id
Also, fix test where attributes were included when id was ""

```
  1) Failure:
  ActionController::Serialization::AdapterSelectorTest#test_render_using_adapter_override
  [test/action_c$ntroller/adapter_selector_test.rb:53]:
  --- expected
  +++ actual
  @@ -1 +1 @@
  -"{\"data\":{\"id\":\"\",\"type\":\"profiles\",\"attributes\":{\"name\":\"Name 1\",\"description\":\"Description 1\"}}}"
  +"{\"data\":null}"
```
2017-04-30 23:28:08 -05:00
Benjamin Fleischer
afe0183f21 Merge pull request #2118 from bf4/only_calculate_cache_key_when_caching
Do not calculate cache_key unless caching
2017-04-30 21:17:31 -07:00
Benjamin Fleischer
c9b0e4e6ae Do not calculate cache_key unless caching 2017-04-30 23:03:18 -05:00
Benjamin Fleischer
81a13c4b32 Merge pull request #2093 from bf4/undef_unneeded_kernel_methods
Undef problematic Object methods
2017-04-30 16:51:19 -07:00
Benjamin Fleischer
7d0f4e0a61 Merge pull request #1857 from bf4/smarter_association_id_lookup
Smarter association id lookup-- no db hit on belongs_to for id-only
2017-04-30 16:50:49 -07:00
Benjamin Fleischer
6e41528515 Skip eval relationships object on belongs to 2017-04-30 18:32:08 -05:00
Manuel Thomassen
273b7e7f30 belongs_to causes unnecessary db hit 2017-04-30 18:11:37 -05:00
Benjamin Fleischer
4fb635bd29 Required 2017-04-30 17:56:13 -05:00
Benjamin Fleischer
320596b75b Undef problematic Object methods 2017-04-30 17:56:13 -05:00
Benjamin Fleischer
0f59d64ed5 Merge pull request #2026 from bf4/refactor_association
Refactor Association to make it eval reflection JIT
2017-04-30 15:41:09 -07:00
Benjamin Fleischer
876190440f Update reflection tests 2017-04-30 16:39:25 -05:00
Benjamin Fleischer
5e01a93fc0 Update comments regarding lazy_association and TODOs 2017-04-30 15:09:18 -05:00
Benjamin Fleischer
ff5ab21a45 Make Association totally lazy 2017-04-23 18:40:46 -05:00
Benjamin Fleischer
7697d9f5ec Refactor: introduce lazy association 2017-04-23 17:53:00 -05:00
Benjamin Fleischer
34d55e4729 Remove extra reflection classes 2017-04-23 17:46:55 -05:00