24 Commits

Author SHA1 Message Date
Henning Vogt
587fb2c5fe Add params to set_id block (#16)
* Add params to set_id block arguments

Pull request #331 added a block to the ObjectSerializer.set_id class
method, which allows passing a block to the set_id method. Currently
this block takes only one argument `record`:

```
set_id do |record|
  "#{record.name.downcase}-#{record.id}"
end
```

This PR adds another argument `params` to the block:

```
set id do |record, params|
  params[:admin] ?  record.id : "#{record.name.downcase}-#{record.id}"
end
```

This customization can be useful in situation where we serve different
clients that may need different IDs. One nice side effect is also that
the `set_id` method has the same method signature as the `attribute`
method.

* Update the README
2019-10-15 14:45:46 -04:00
iwsksky
b9a86a002a pass array of unique movies to serializer 2019-10-04 12:50:22 -04:00
Shishir Kakaraddi
cc7f88843a
Merge pull request #331 from larissa/set-id-block
Allow block for id customization
2018-11-03 11:37:56 -07:00
Larissa Reis
9fa26fa588 Allow block for id customization
Allow an ID of object to be customized directly on the serializer by
passing a block to `set_id` as opposed to only through a model property.

We already allow for attributes that do not have a model property of the
same name to be customized directly on the serializer using a block.

This customization can be useful in situation in which you have
different classes being serialized using the same serializer. For
example, if we have `HorrorMovie`, `ComedyMovie` and `DramaMovie` using
the same `MovieSerializer`, we can unify their IDs using

```
class MovieSerializer
  include FastJsonapi::ObjectSerializer

  attributes :name, :year
  set_id do |record|
    "#{record.name.downcase}-#{record.id}"
  end
```

which is preferable to creating a `#serialized_id` method in every model
that will use `MovieSerializer` to encapsulate the customization.

Closes #315
2018-10-10 22:26:57 -06:00
Austin Matzko
1ab5cd387a Don't share data_links among inherited serializers. 2018-10-03 17:51:37 -04:00
Kenji Sakurai
64f7b6c50d Add spec for singular and plural, so remove same checking example. 2018-09-16 14:18:10 +09:00
Kenji Sakurai
57f09c7d71 Fix method order in spec after 2018-09-10 11:07:06 +09:00
Kenji Sakurai
6dc34cd4d4 Fix set_key_transform's set_type to give priority to pre-set value 2018-09-08 23:48:44 +09:00
Shishir Kakaraddi
a5414c6b8f
Merge pull request #280 from manojmj92/add_meta
Introduce the ability to add `meta` tag for every resource in the collection
2018-07-23 13:30:39 -07:00
Manoj M J
dd71bc15d6 Introduce the ability to add meta tag for every resource in the collection 2018-07-20 10:33:27 +05:30
Manoj M J
9c659839e4 Evaluate ids via the specified ‘id_method_name’ when relationships are evaluated via a block 2018-07-19 15:40:20 +05:30
Erol
e05193fb5e Add spec for proc methods with optional arguments 2018-07-16 21:10:10 -07:00
Erol
449c1bf05f Allow passing procs with variable arguments when declaring an attribute 2018-07-16 21:10:10 -07:00
Darren Johnson
4a333d7276 Set type value when setting key transform 2018-06-21 18:40:24 -07:00
Shishir Kakaraddi
ea5296ac25 making object level links similar to attributes 2018-05-20 15:08:47 -07:00
Jodi Showers
74f27ccdf0 Links within data (#161) 2018-05-20 13:14:46 -07:00
Shuhei Kitagawa
5b64e90956 Add tests for block relationship 2018-05-06 10:26:38 -07:00
Zino
faa8fe6caf Use string for serializer name 2018-05-02 10:22:22 -07:00
Shuhei Kitagawa
5d8e1ce9e7 Refactor tests for key_transform method 2018-05-01 23:28:07 -07:00
Shuhei Kitagawa
fb7d01368a Integrate tests for #set_id and #attribute to object_serializer_class_methods_spec 2018-03-29 17:22:51 -07:00
Shuhei Kitagawa
cdfac8743d Refactor object serializer class methods spec (#134)
* Add object_serializer_class_methods_examples

* Change to require spec/shared/examples in every spec files

* Refactor object_serializer_class_methods_spec
2018-03-26 22:16:37 -07:00
Shuhei Kitagawa
b18da3da59 Remove unused variable from object_serializer_class_methods_spec 2018-03-21 07:39:55 -07:00
Shishir Kakaraddi
00e960f883 adds the use_hyphen feature back and adds a deprecation warning 2018-03-17 18:33:55 -07:00
Shishir Kakaraddi
5374a1378e initial commit 2018-01-31 16:20:40 -08:00