【发布时间】:2015-08-31 01:20:05
【问题描述】:
在我的 Rails / Angular 应用程序中,我通过 Rails 序列化程序将数据传递到前端,并允许通过 params.permit 更新字段。
我了解 serializer/safe_params 的部分目的是仔细控制进出服务器的内容。但是,对于大多数模型,我发现我需要包含所有字段。
是否有元编程或其他方法可以让 serailizer 和 safe_params 的主体简单地公开/接受模型上的所有字段,包括虚拟字段?
示例代码
序列化器
class BatchSerializer < ActiveModel::Serializer
attributes :id,
:description,
:details,
:user_id,
:name,
:dataset,
:dataset_id,
:pairs_per_sequence,
:pairs_per_bp,
:batch_type,
:overlap_size,
:padding,
:assembly_id,
:multiplex_tolerance,
:run_id,
:snp_mask,
:primer3_parameter_id,
:specificity_check,
:batch_status,
:avoid_cross_primers,
:temperature_similarity,
:gibbs_free_energy,
:base_termination,
:wet_lab
end
控制器安全参数
def safe_params
params.permit(:id,
:description,
:details,
:user_id,
:name,
:dataset,
:dataset_id,
:pairs_per_sequence,
:pairs_per_bp,
:batch_type,
:overlap_size,
:padding,
:assembly_id,
:multiplex_tolerance,
:run_id,
:snp_mask,
:primer3_parameter_id,
:specificity_check,
:avoid_cross_primers,
:temperature_similarity,
:gibbs_free_energy,
:base_termination,
:wet_lab_result)
end
编辑
这篇文章回答了一半的问题:允许所有 Rails 4 Strong parameters : permit all attributes?
那么我将如何自动序列化所有字段?
【问题讨论】:
-
您可以(重新)定义
as_json方法来定义在调用to_json时要在模型上序列化哪些属性。
标签: ruby-on-rails ruby serialization