0

我一直在为我正在从事的项目寻找 Padrino,这似乎很合适,因为我理想情况下希望支持以 json 格式发送和接收的数据。

但是我想知道是否有任何内置的自动帮助程序或功能可以从发布请求(或其他请求)中获取数据并将该数据放入模型中,而无需为每个模型编写自定义逻辑来处理数据?

在博客示例中,他们简要地略过了这一点,但似乎只是将参数数据传递到他们的 Post 模型的初始化程序中,让我假设它只是神奇地知道如何处理所有事情......不确定是否是这种情况,并且如果是这样,它是 Padrino 功能还是 ActiveRecord(就像他们在示例中使用的那样)。

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

这样做是否有任何好的模式/功能?

4

1 回答 1

2

是的,您可以使用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。

于 2011-12-05T14:06:41.053 回答