【问题标题】:Rails: default serializers and safe_params to all fields in the model [duplicate]Rails:模型中所有字段的默认序列化程序和safe_params [重复]
【发布时间】: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


【解决方案1】:

如果你只是停止传入一个序列化器,Rails 将使用默认的序列化器来呈现所有属性。

例如,假设您有一个名为 MyObject 的模型,您可以使用以下方式进行渲染:

render :json => my_object

re:允许所有属性 - 您可以查看Rails 4 Strong parameters : permit all attributes?

【讨论】:

    猜你喜欢
    • 2019-04-08
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多