1

私には2つのモデルがあります。会社とユーザーはhas_and_belongs_to_manyの関係にあります。

会社のすべてのユーザーを取得する方法でアクティブなリソースを使用しています。

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

唯一の問題は、もう一方の端で、lookup_usersメソッドを呼び出すと、返されるvalはCompanyオブジェクトの配列であり、Userオブジェクトの配列ではなく、Company属性の配列であり、それぞれが1つのcompany属性を持ちます。以下の出力を参照してください。

activeresourceを使用したreturnによって作成されるオブジェクトタイプを明示的に設定する方法を知っている人はいますか?

私のサービスで@company.users.to_xmlを呼び出すと、通常のように見えるxmlがレンダリングされるため、奇妙です。 " <users type='array'>"に注意してください。ただし、返される場合は、会社のオブジェクトです。

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

上記のサービス呼び出しの戻り値:(rdb:1)pp users

[#<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"=>"auf@b.c",
    "active"=>false,
    "middle_name"=>nil},   @prefix_options={}>]
4

2 に答える 2

0

おっと、私は間違いなく私の問題を見つけました。クライアントが電話しています

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

これは明らかに Company オブジェクトを返します...

私は睡眠不足です

于 2009-03-26T13:36:26.050 に答える
0

私はあなたの問題が何であるかを本当に理解していません。あなたの例では @company はオブジェクトですが、 @company.users はユーザー オブジェクトの配列です。

電話すると:

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

これにより、おそらくユーザーの配列がレンダリングされ、すべてのユーザーに対して会社の配列が含まれます。

于 2009-03-25T22:17:34.027 に答える