来自json数据的Padrino模型

我一直在看Padrino正在进行的项目,这看起来非常合适,因为我理想的是希望支持以json的forms发送和接收的数据。

但是我想知道是否有内置的自动助手或function来从后请求(或其他请求)获取数据并将该数据放入模型而无需为每个模型编写自定义逻辑来处理数据?

在博客示例中,他们简要地略过了这一点,但似乎只是将参数数据传递给他们的Post模型的启动器,让我假设它只是神奇地知道如何处理所有事情……不确定是否是这种情况,并且如果是这样的话Padrinofunction或ActiveRecord(就像他们在示例中看起来那样)。

我知道我可以使用ActiveSupport进行基于JSON的编码/解码,但这只是给我一个原始对象,并且由于每个模型的存储问题都在主模型类中,我需要使用mixin或其他东西来实现这一点,这似乎讨厌。

这样做有没有好的模式/function呢?

是的,您可以使用provides ,每个响应对象将调用to_json即:

 get :action, :provides => :json do @colletion = MyCollection.all render @collection # will call @collection.to_json end 

这里是一个填充某些模型的丑陋代码的示例。

 # Gemfile gem 'json' # note that there are better and faster gems like yajl # controller post "/update/:model/:id", :provides => :json do if %w(Account Post Category).include?(params[:model]) klass = params[:model].constantize klass.find(params[:id]) klass.update_attributes(JSON.parse(params[:attributes])) end end 

最后,如果你发布一个请求,如:

 attributes = { :name => "Foo", :category_id => 2 }.to_json http://localhost:3000/Account/12?attributes=#{attributes} 

您将能够更新帐户模型的记录12。