在我的應用程序中,2人可以通過友誼模式成爲朋友,他們可以創建他們借給其他朋友多少錢的記錄。Rails 3 - 如何在關聯擴展方法中使用諸如proxy_targets的where和sum之類的方法?
我想創造這樣的事情
@ friendship.receipts.balance_for(@user),這將返回@user多少欠或由他們的朋友在這種友誼拖欠。即如果返回-50他們欠$ 50,如果其正被拖欠$ 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
但遺憾的是方法和着關聯擴展在proxy_target上使用,因爲它返回一個普通的數組而不是Activerecord :: Relation類和期望的。
這是一個很好的解決方法嗎?編號喜歡創建一個可以在範圍結果上調用的方法。