2009-03-25 4 views
1

У меня есть две модели: компания и пользователь имеют отношение has_and_belongs_to_many.Rails ActiveResource Возвращаемые значения HABTM

Я использую активный ресурс с методом, чтобы получить все пользователи компании:

def users 
    @company = Company.find(params[:id], :include => [:users]) 
    render :xml => @company.users.to_xml(:include =>[:companies]) 
end 

Единственная проблема, на другом конце, когда я называю свой метод lookup_users, возвращаемый вал является массива Объекты компании, каждый с одним атрибутом компании, в отличие от массива объектов пользователя, каждый с одним атрибутом компании. См. вывод ниже:

Кто-нибудь знает, как я могу явным образом установить тип объекта, activeresource?

Это странно, потому что вызов @ company.users.to_xml в моей службе отображает xml, который кажется нормальным: обратите внимание на «<users type='array'>», но когда он возвращается, это объект компании.

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<users type=\"array\">\n <user>\n < 

возвращенное значение выше вызова службы: (RDB: 1) пользователи стр

[#<AsClient::Company:0x1959628 @attributes= {"work_phone"=>nil, 
    "city"=>nil, 
    "fax_number"=>nil, 
    "company"=>nil, 
    "updated_at"=>Wed Mar 25 21:05:43 UTC 2009, 
    "postal_code"=>nil, 
    "title"=>nil, 
    "the_parent_record_id"=>"650", 
    "hashed_password"=>"d80052727e9719113277bcc712d647aedefaff4b", 
    "last_logged_into"=>nil, 
    "last_seen_at"=>nil, 
    "customers"=> 
    [#<AsClient::Company:0x19568c4 
     @attributes= 
     {"name"=>"hmvc0joq", 
     "updated_at"=>Wed Mar 25 21:05:43 UTC 2009, 
     "main_contact"=>nil, 
     "id"=>650, 
     "customer_id"=>"650", 
     "deleted"=>nil, 
     "deleted_by"=>nil, 
     "user_id"=>"3263", 
     "created_at"=>Wed Mar 25 21:05:43 UTC 2009, 
     "active"=>nil}, 
     @prefix_options={}>], 
    "created_by"=>"AsTesting", 
    "password_salt"=>"m8j35JAnpd0IlllSHDCfd0BE5R1UHoT1", 
    "country"=>nil, 
    "activation_code"=>"8xB2J7LL3tQuK2Z9I1AKhAcotaSp8zgz", 
    "id"=>3263, 
    "updated_by"=>nil, 
    "password_reset_code"=>nil, 
    "address_1"=>nil, 
    "home_phone"=>nil, 
    "deleted"=>false, 
    "address_2"=>nil, 
    "deleted_by"=>nil, 
    "first_name"=>"Joe", 
    "last_name"=>"Test", 
    "province"=>nil, 
    "mobile_phone"=>nil, 
    "suffix"=>nil, 
    "alt_email"=>nil, 
    "created_at"=>Wed Mar 25 21:05:43 UTC 2009, 
    "email"=>"[email protected]", 
    "active"=>false, 
    "middle_name"=>nil}, @prefix_options={}>] 

ответ

0

К сожалению, я определенно нашел свою проблему. Мой клиент звонит

users = Company.find(:all, :params => {:id => company_id}, :from => :users) 

который, очевидно, возвращает объект компании ...

мне нужно больше спать

0

Я не очень понимаю, что это ваша проблема. В вашем примере @company - это объект, но @ company.users - это массив пользовательских объектов.

Когда вы звоните:

@company.users.to_xml(:include =>[:companies]) 

это, вероятно, оказывает множество пользователей и для каждого пользователя будет включать в себя множество компаний.

+0

На стороне службы, @ company.users.to_xml (: включить => [: компании ]) отображает xml как массив пользователей. Однако на стороне клиента, когда я получаю этот ответ, теперь это массив компаний. См. Приведенный выше код [# brad

+0

Опять же, мне нужен массив пользователей, не уверенный, почему я внезапно получаю компании, я отвечаю на этот звонок: render: xml => @ company.users.to_xml (: include => [: компании]) – brad

Смежные вопросы