【发布时间】:2015-07-10 05:26:42
【问题描述】:
我正在使用 Ruby、Grape 和 ActiveRecord 构建一个 Web API。来自 ASP.NET Web API 我习惯于将模型从 JSON 自动绑定到类对象,然后可以使用 Entity Framework 保存该对象。在使用 ActiveRecord 时,我一直在寻找是否有与此类似的东西,但没有找到任何让我认为我错过了一些非常明显的东西的东西。将 JSON 反序列化为 ActiveRecord 模型的最佳方法是什么?
更新
Matts 答案非常适合简单类型,但是当我有关联时,我收到以下错误:ActiveRecord::AssociationTypeMismatch: Connector(#70297711668780) expected, got Hash(#70297701477140)
这是我正在运行的代码
class Card < ActiveRecord::Base
has_many :connectors, autosave: true
end
class Connector < ActiveRecord::Base
has_one :card
has_one :connected_card, :class_name => "Card", :foreign_key => "connected_card_id"
end
json = "{\"id\":\"1\", \"connectors\": [{\"id\": 1, \"card_id\":1}]}"
card = Card.new(ActiveSupport::JSON.decode(json))
【问题讨论】:
-
这会将 JSON 对象解码为通用哈希对象。有没有办法将它转换为 ActiveRecord 类型?
标签: ruby-on-rails ruby json activerecord grape