【发布时间】:2015-05-20 20:12:51
【问题描述】:
是否可以在序列化程序中包含代码?我有一些常用的方法,我只想包括而不是总是重复它们。
【问题讨论】:
标签: ruby-on-rails-4.1 active-model-serializers
是否可以在序列化程序中包含代码?我有一些常用的方法,我只想包括而不是总是重复它们。
【问题讨论】:
标签: ruby-on-rails-4.1 active-model-serializers
如果您正在寻找一些代码作为示例:
1) 创建包含专门关注点的专门序列化程序
# app/serializers/specialized_serializer.rb
class SpecializedSerializer < DefaultSerializer
include SpecializedConcern
...
end
2) 在新的关注文件夹中创建您的专业关注
# app/serializers/concerns/specialized_concern.rb
module SpecializedConcern
extend ActiveSupport::Concern
included do
include SomeModule
...
end
def some_method
...
end
end
3) 将新的序列化关注点文件夹添加到应用程序自动加载路径
# config/application.rb
...
config.autoload_paths += "#{config.root}/app/serializers/concerns"
...
【讨论】:
config.eager_load_paths << Rails.root.join("app/serializers/concerns") 将 serializers/concerns 目录添加到 config/application.rb 中的 eager_load_paths
当然可以。使用关注点、ApplicationSerializer 或编写另一个类来共享行为应该没问题。
【讨论】:
FormSerializer 的新类,它从 ActiveModel::Serializer 扩展而来,然后当我需要与表单相关的方法时,我让其他序列化程序从它扩展而来。