【问题标题】:How to ignore certain fields while JSON deserialization?JSON反序列化时如何忽略某些字段?
【发布时间】:2015-10-02 18:28:29
【问题描述】:

我有一个想要反序列化并保存到数据库的 json。这是一个代码sn-p:

class WelcomeController < ApplicationController
  def index
    json_articles = JSON.parse('json_string_here')
    json_articles['articles'].each do |article|
      Article.new(article).save
    end
  end
end

在反序列化过程中,我收到以下错误,原因是数据库架构中 article_link 字段不存在:

文章的未知属性“article_link”。

所以,这是我的问题:

  1. 如果我想在反序列化时忽略该字段如何实现?
  2. 如果上述代码中有 cmets?

谢谢。

【问题讨论】:

    标签: ruby-on-rails json deserialization rails-activerecord


    【解决方案1】:

    您可以执行以下操作

    Article.new(article.except('article_link')).save
    

    你可以通过使用进一步缩短这条线

    Article.create(article.except('article_link'))
    

    这会同时执行newsave。如果您的 Article 模型中有任何验证,如果这些验证失败,这两个变体都可能不会保存到数据库中。您可能想在此处检查此类错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 2021-10-27
      相关资源
      最近更新 更多