2016-08-02 4 views
0

Можно ли условно исключить, включить или включить параметры при рендеринге? Так, как в приведенном ниже примере:Условное исключение, только, включить в рендеринг json для Rails

render json: @post, 
except: [:author] 

Возможно ли, что за исключением варианта или аналогичного варианта быть условным?

В идеале, что-то вроде условного способа сделать это, что позволяет мне иметь дело со многими различными условиями и случаями.

Как может быть, что-то вроде:

render json: @post, 
except: return_excluded_keys 

return_excluded_keys функция может вернуть ключи, которые должны быть исключены.

Я использую Rails 4.2.6 и Active Serializers модели 0.9.3.

ответ

0

Conditional attributes in Active Model Serializers

https://github.com/rails-api/active_model_serializers/issues/825

Я считаю, что они должны направить вас в правильном направлении. Вы можете передать условие сериализатору, а затем вручную построить вывод.

+0

Спасибо за ссылки! В идеале я надеялся каким-то образом сделать это в самом контроллере, вместо того, чтобы сериализатор имел дело с кучей условий. Если ничего другого, я пойду за этим! – geoboy

0

Может быть:

render json: @post.as_json(except: [:author]) 
+0

Извините, но я, возможно, не буду следовать. Как это разрешить условную часть 'except'? – geoboy

+0

К сожалению, я очень сожалею, что неправильно понял ваш вопрос. Вы имеете в виду рендеринг 'author' только с некоторым условием? Если да, почему бы не просто использовать условие тернарного оператора? render (json: @post): render (json: @post, except: [: author]) ' – Canh

+0

Я надеялся на некоторый условный способ сделать это, что позволяет мне иметь дело со многими различными условиями и случаями. Возможно, что-то вроде: 'except: return_excepted_keys', и эта функция может возвращать ключи, которые необходимо исключить. – geoboy