Ruby on rails Rails为呈现的集合的每个元素使用新计算的值呈现JSON
我希望在查询Rails API路由时,向呈现为Ruby on rails Rails为呈现的集合的每个元素使用新计算的值呈现JSON,ruby-on-rails,json,api,Ruby On Rails,Json,Api,我希望在查询Rails API路由时,向呈现为render json:的集合的每个元素添加一个新计算的值 这是当前设置: #应用程序/模型 类用户
render json:
的集合的每个元素添加一个新计算的值
这是当前设置:
#应用程序/模型
类用户<应用程序记录
有多个:池,通过::user\u池
结束
类池<应用程序记录
通过::user\u池拥有多个:用户
你有很多赌注吗
def平均值()
某种平均水平(自我赌注)
结束
结束
#app/controllers/pool_controller.rb
def索引
@用户=当前用户
@pools=@user.pools
呈现json:@pools,仅:[:ticker,:id]
结束
我想做的是为@pools
集合的每个池添加一个pool.average
值
应该是这样的:
#app/controllers/pool_controller.rb
def索引
@用户=当前用户
@pools=@user.pools
呈现json:@pools,仅限:[:ticker,:id,average:@pools.each{| pool | pool.average}]
结束
当然,以上这些都不行,实现我的目标最优雅的方式是什么
我能想到的唯一方法是计算所有之前的平均查询,然后将其作为池的新属性插入数据库中,这样控制器就可以变成:
#app/controllers/pool_controller.rb
def索引
@用户=当前用户
@pools=@user.pools
呈现json:@pools,仅:[:ticker,:id,:average]
结束
但我想知道,如果我想避免大量计算来更新数据库,并向每个池添加:average属性,我该怎么做。即使可能是最好的解决方案,而不是计算每个查询的平均值?在pool.rb中尝试此方法编写一个名为average的方法,并在该方法中编写逻辑
在控制器的索引方法中,以这种方式写入
render json:@pools,only:[:ticker,:id,:average],methods::average
在pool.rb中尝试此操作。编写一个名为average的方法,并在该方法中编写逻辑
在控制器的索引方法中,以这种方式写入
render json:@pools,only:[:ticker,:id,:average],methods::average