ruby-on-rails - 将 JSON 数组转换为 Activerecord 模型数组?

标签 ruby-on-rails ruby json activerecord

我有一个 JSON 字符串数组。如何将它们转换为 Activerecord 模型数组?

我当前的代码如下所示,我不想一一重复:

jsons = ['{"id": 1, "field1" : "value1"}'] #this is an array of jsons
models = [] #i want an array of models back

jsons.each do |json|
            if(json == nil)
                next
            end

            begin
                hash = JSON.parse(json)
            rescue
                next
            end

            model = className.new
            model.attributes = hash
            model.id = hash["id"]
            models << model
end

最佳答案

你应该这样做:

models = jsons.compact.map { |json| Klass.new(JSON.parse(json)) }

其中 KlassActiveRecord 模型类

编辑

根据评论,您不想批量分配 ID,它真的会变得笨拙,最好让 rails 为您生成它,非批量分配是:

models = jsons.compact.map { |json| Klass.new(JSON.parse(json).except(:id, "id")) }

:id, "id" 是因为我不确定解析出来的json是用symbol还是strings作为key

关于ruby-on-rails - 将 JSON 数组转换为 Activerecord 模型数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220488/

相关文章:

javascript - 如何获取填充有来自 firebase 的数据的表

javascript - 如何使用 JSON.NET 通过 ASP.NET MVC 传递 JSON 日期值?

ruby-on-rails - 逐行捕获 shell 命令的输出到一个数组中

ruby-on-rails - Ruby - cURL 为 nil :NilClass error 抛出未定义的方法 `post'

ruby-on-rails - 放置调试语句

Ruby 发送 JSON 请求

ruby-on-rails - 如何使用Warden实现 "forgot password"?

ruby - Sinatra haml 页面被调用两次

ruby - 初学者 Ruby - 关于对象

python - 服务器响应中的 BOM 搞砸了 json 解析