2

現在、Rails アプリの API に属性を取り込もうとしています。使用例は単純です。私はユーザーモデルを持っています:

class User < ActiveRecord::Base
  attr_accessible :email
end

基本的にユーザーをイベントにリンクする別のモデルがあります。

class UserEvent < ActiveRecord::Base
  belongs_to :user
  belongs_to :event
end

JSON または XML としてアクセス可能な API を介して UserEvent モデルを使用して、イベントに関連するすべてのユーザーを一覧表示できるようにしたいと考えています。また、UserEvent の電子メールが XML と JSON ダンプの両方に表示されるようにしたいと考えています。

この質問は、serialiable_hash をオーバーライドできることを示唆しています。to_xml では serializable_hash が使用されていないように見えるため、これは JSON に対してのみ機能するようです。

私が調査した別のアプローチは、クラスの属性メソッドをオーバーライドすることでした。

class UserEvent < ActiveRecord::Base
   def attributes
    @attributes = @attributes.merge "email" => self.email
    @attributes
  end
end

これは JSON ではうまく機能しますが、XML バージョンを試すとエラーがスローされます。

undefined method `xmlschema' for "2011-07-12 07:20:50.834587":String

この文字列は、オブジェクトの「created_at」属性であることがわかりました。したがって、ここで操作しているハッシュで何か間違ったことをしているようです。

4

1 に答える 1

2

を使用して、ネストされたデータを API 応答に簡単に追加できますinclude。次に例を示します。

respond_with(@user, :include => :user_event )

に逆関連付けも追加する必要がありますUser

has_many :user_events

:include複数のモデルに対して配列を渡すことができます。それらをシリアル化し、応答で適切にネストします。

于 2011-08-30T20:53:30.257 に答える