私のアプリでは、2 peopeは友人関係のモデルを介して友人になることができ、彼らは他の友人にどれくらいの金額を貸し出したかの記録を作成することができます。Rails 3 - 関連拡張メソッドでproxy_targetsのwhereやsumなどのメソッドをどのように使用しますか?
私は@userはに負っているか、この友情に彼らの友人が負っているどのくらい戻りますfriendship.receipts.balance_for(@user)@この
のようなものを作りたいです。それが返された場合、すなわち-50彼らは$ 50借りたり、その正は、それらをIDも(日付、タグなどによって)ライブフィルタリングで使用することができ、さらに適用範囲このすなわちになりたい$ 50
を負っている場合は、この
をしたいと思います@ friendship.receipts.where(:タグ=>「食料品).balance_for(@user)
私の最初の試みは、友情モデル
class Friendship < ...
has_many :receipts do
def balance_for(user)
user_total_spent = proxy_target.sum(:value, :payer_id => user.id)
friend_total_spent = proxy_target.sum(:value, :payer_id => friend.id)
return user_balance = user_total_spent - friend_total_spent
end
end
end
残念ながら方法和カントに関連の拡張機能を作成することでしたplain_tを返すので、proxy_targetで使用する配列ではなく、Activerecord :: Relationクラスのsumは期待しています。
この問題を回避するにはどうすればよいですか? Idはスコープ付きの結果で呼び出すことができるメソッドを作成するのが好きです。