我有params的根: 本地主机:3000 /点/ mypoint.json =的access_token acuotodEhqyFnVQPJ2AK 此根将返回所有用户餐厅的列表点(从access_token获取用户) 我的代码:
def mypoint
@locations = Location.select("locations.*")
end
def totalpoint
@totalpoint = 0
return 0 if self.user_points.point.count==0
self.user_points.point.collect { |p| @totalpoint = @totalpoint +p.points}
return @totalpoint
end
scope :point, where( "points IS NOT ?", nil )
Rabl文件:
collection @locations
attributes :name, :totalpoint
数据库:
--id---user_id---point_type--restaurant_id---points---
1 1 favourite 1 50
2 7 ratings 1 123
3 7 comments 1 50
4 7 comments 2 50
5 7 ratings 2 10
结果:
[
{
"name": "quoc",
"totalpoint": 223
},
{
"name": "Restaurant_id2",
"totalpoint": 60
}
]
但这是关于用户的所有餐厅的结果列表点。 请告诉我在totalpoint方法中添加条件user_id。 我想在下面得到结果 user_id = 1的结果:
[
{
"name": "quoc",
"totalpoint": 50
},
{
"name": "Restaurant_id2",
"totalpoint": 0
}
]
user_id = 7的结果:
[
{
"name": "quoc",
"totalpoint": 173
},
{
"name": "Restaurant_id2",
"totalpoint": 60
}
]
请给我你的解决方案。谢谢所有
答案 0 :(得分:0)
正确地详细说明你的问题,我花了15分钟才明白!
您可以在模型内部编写方法。什么是型号名称? 按user_id获取点列表
首先找到所有唯一的user_id和restaurant_id
a=Model.select("DISTINCT(restaurant_id)")
b=Model.select("DISTINCT(user_id)")
现在a = [1,2]和b = [1,7]这个例子,现在获得每个餐馆用户收集的所有积分。
score=Array.new
b.each do |k|
rest=Hash.new
a.each do |f|
rest[f]=Model.find(:all,:conditions=>["user_id=? and restaurant_id",k,f],:select=>["points"] )
end
score<<rest
end
这样做。