我一直在为我正在从事的一个项目寻找 Padrino,它似乎非常适合,因为我理想情况下希望支持以 json 形式发送和接收数据。
但是我想知道是否有任何内置的自动化帮助程序或功能可以从发布请求(或其他请求)中获取数据并将该数据放入模型中,而无需为每个模型编写自定义逻辑来处理数据?
在博客示例中,他们简要地浏览了这一点,但似乎只是将参数数据传递到他们的 Post 模型的初始化程序中,让我假设它只是神奇地知道如何处理所有内容......不确定是否是这种情况,并且如果是的话,它是 Padrino 功能或 ActiveRecord (因为这就是他们在示例中使用的功能)。
我知道我可以使用 ActiveSupport 进行基于 JSON 的编码/解码,但这只是给了我一个原始对象,并且由于每个模型的存储问题都位于主模型类中,我需要使用 mixin 或其他东西来实现这一点,这似乎可恶的。
是否已经有任何好的模式/功能来做到这一点?
是的,你可以使用provides
每个响应对象都会调用to_json
i.e:
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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)