2

私の API では、次の方法で ActiveRecord オブジェクトを json に変換しています。

user.to_json :methods => :new_messages

irb を使用して、このステートメントを実行すると、次のようになります。

{someAttr: someValue, ....}

これは完璧です。これは単一のオブジェクトであるため、配列にラップされていません。これをsinatraアプリで次のように実行すると:

get '/api/users/:fb_id' do |fb_id|
    user = User.where :fb_id => fb_id
    user.to_json :methods => :new_cookies
end

配列でラップします!!! このような:

[{someAttr: someValue, ....}]

どうすればこれを修正できますか?さらに重要なことに、なぜ?!?

4

2 に答える 2

1

この行を置き換えます:

user = User.where :fb_id => fb_id

この行で:

user = User.find_by_fb_id fb_id
于 2012-11-28T08:51:35.537 に答える
1

ハッシュを使用するだけです。[]

 Hash[{a: :b}]
 # => {:a=>:b}

さらに重要なのは、なぜ?!?

2 番目の例で使用している ORM はどれですか? ActiveRecord の場合、 を呼び出したときに配列にラップされるActiveRecord::RelationUser.where :fb_id => fb_idオブジェクトを返します。このように固定できます.to_json

get '/api/users/:fb_id' do |fb_id|
  user = User.find_by_fb_id(fb_id)
  user.to_json :methods => :new_cookies
end
于 2012-11-28T08:26:03.697 に答える