【发布时间】:2010-08-20 01:15:47
【问题描述】:
我的情况有点复杂。我正在构建一个带有 rails 后端的 iPhone 应用程序。有两个模型对象,一个聊天会话和一个人。它们的定义如下:
class Person < ActiveRecord::Base
belongs_to :chatsession
end
class Chatsession < ActiveRecord::Base
has_many :people
belongs_to :leader, :class_name => "Person"
end
领导者本质上是特定聊天会话的主要人物。现在,从我的 iPhone 应用程序中,我希望能够在一次通话中与领导者创建聊天会话(通常网络通话在 iPhone 上很昂贵,因此我想避免创建一个 Person 对象,然后创建一个会话对象)。
可能的 JSON 请求可能如下所示:
{"chatsession": {"leader": {"name":"mary","device_id":"1111"}}}
在我的聊天会话控制器的 create 方法中,我希望能够吸入这个 JSON 并让它创建一个新的聊天会话对象和关联的人员对象。
执行此操作的相关代码是:
class ChatsessionController < ApplicationController
def create
@chatsession = Chatsession.new(params[:chatsession])
end
在我的功能测试中,它使用以下代码:
test "should create session" do
# people(:one) is retrieving from a fixture
post :create, :chatsession => { :leader => people(:one) }
assert_response :success
end
这很好用。但是创建等效的 json 似乎不起作用。它期待某种 Person 对象,我不知道如何表示。我已经研究了以下解决问题的方法。
http://www.rogue-development.com/blog2/2009/05/creating-nested-objects-with-json-in-rails/
这是最好的解决方案还是我错过了什么?
【问题讨论】:
标签: ruby-on-rails json associations