如何在JSON反序列化时忽略某些字段?

时间:2015-10-02 18:28:29

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

我有一个json,我想要反序列化并保存到数据库中。这是一个代码段:

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字段不存在,我收到以下错误:

  

未知属性&#39; article_link&#39;对于文章。

所以,这是我的问题:

  1. 如果我想在反序列化时如何忽略此字段?
  2. 如果对上面提到的代码有评论吗?
  3. 感谢。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作

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

您可以使用

进一步缩短此行
Article.create(article.except('article_link'))

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