Sou*_*nka 1 serialization ruby-on-rails active-model-serializers
class Api::V1::BookSerializer < ActiveModel::Serializer
attributes :id, :status, :name, :author_name, :published_date
attributes :conditional_attributes if condition_1?
belongs_to :user if condition_2?
end
Run Code Online (Sandbox Code Playgroud)
在这里,我想为控制器的基本操作设置条件。
例如,我想仅发送索引操作的条件属性,而不发送其他操作的条件属性。
但据我所知,rails "active_model_serializers", "~> 0.10.0" 并没有给出任何这样的东西。
像这样的事情应该可以解决问题:
\nclass Api::V1::BookSerializer < ActiveModel::Serializer\n attributes :id, :status, :name, :author_name, :published_date\n\n attribute :conditional_attribute, if: :some_condition?\n belongs_to :conditional_association, if: :some_other_condition?\n\n private\n\n def some_condition?\n # some condition\n end\n\n def some_other_condition?\n # some other condition\n end\nend\nRun Code Online (Sandbox Code Playgroud)\n您还可以用于:unless否定条件。
如果需要,您可以在您的条件下使用instance_options或(请参阅https://github.com/rails-api/active_model_serializers/blob/0-10-stable/docs/howto/passing_ Arbitration_options.md )或者您可以使用s (请参阅https://github.com/rails-api/active_model_serializers/blob/0-10-stable/docs/general/serializers.md#scope)instance_reflectionsscope
注意:据我所知,这仅适用于attribute关联方法 \xe2\x80\x93 ,它不适用于attributes(请参阅https://github.com/rails-api/active_model_serializers/blob/0-10 -stable/lib/active_model/serializer.rb#L204-L210),因为它不传递选项。
我阅读了您关于坚持使用 AM 序列化器的评论,但我仍然会指出:如果您正在寻找比 AM 序列化器更强大、更灵活的解决方案,jsonapi-serializer或Blueprinter工作得很好,并且两者都支持条件字段以及条件关联。
\n| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |