Sinatra Json Post由Datamapper Save改变

时间:2014-08-06 18:43:14

标签: ruby json sinatra datamapper

我有一个带有此路线的Sinatra应用程序,该应用程序由Android应用程序请求并返回一些带有连接信息的Json。

post '/getConnection' do
content_type :json

#session and tokens
session_id = 123 
agent_token = 456 
user_token = 789

#Create new room based on session and store
newRoom = Room.new
newRoom.attributes = {:sessionID => session_id,
  :agentToken => agent_token,
  :userToken => user_token}
newRoom.save

#Json
{:con =>[:session =>session_id,:token =>user_token]}.to_json
end

没有新的房间创建和数据库存储(顺便使用Datamapper),一切正常。但是当我添加它时,甚至包含代码的函数都会混淆响应。

这是房间模型:

class Room
  include DataMapper::Resource

  property :id, Serial
  property :sessionID, String
  property :agentToken, String
  property :userToken, String

end

DataMapper.finalize

DataMapper.auto_upgrade!

有没有办法实现回调函数或者什么东西会返回Json并存储信息而不会搞乱发送的Json?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

问题在于我的app.rb文件中不需要和配置DataMapper。我最终得到了:

require 'data_mapper'
DataMapper.setup(:default, 'postgres://database-uri')

post '/getConnection' do
content_type :json

#session and tokens
session_id = 123 
agent_token = 456 
user_token = 789

#Create new room based on session and store
Room.create(
  :sessionID      => session_id,
  :agentToken       => agent_token,
  :userToken => user_token
)

#Json
{:con =>[:session =>session_id,:token =>user_token]}.to_json
end