如何在 JSON 反序列化时忽略某些字段?
How to ignore certain fields while JSON deserialization?
我有一个 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
字段不存在,我收到以下错误:
unknown attribute 'article_link' for Article.
所以,这是我的问题:
- 如果我想在反序列化时忽略这个字段怎么实现?
- 如果对上面提供的代码有意见?
谢谢。
您可以执行以下操作
Article.new(article.except('article_link')).save
您可以使用
进一步缩短此行
Article.create(article.except('article_link'))
这会同时执行 new
和 save
。如果您在 Article 模型中有任何验证,如果这些验证失败,则两个变体可能不会保存到数据库中。您可能需要在此处检查此类错误。
我有一个 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
字段不存在,我收到以下错误:
unknown attribute 'article_link' for Article.
所以,这是我的问题:
- 如果我想在反序列化时忽略这个字段怎么实现?
- 如果对上面提供的代码有意见?
谢谢。
您可以执行以下操作
Article.new(article.except('article_link')).save
您可以使用
进一步缩短此行Article.create(article.except('article_link'))
这会同时执行 new
和 save
。如果您在 Article 模型中有任何验证,如果这些验证失败,则两个变体可能不会保存到数据库中。您可能需要在此处检查此类错误。