这是我想要解决的简化版本: 在Ruby 2.0.0中,Rails 4.0.0,Activerecord
细分has_many
销售
Sale.find(1).bid = 1
Sale.find(1).ask = 2
Sale.find(2).bid = 10
Sale.find(2).ask = 20
etc
当我写这个方法时:
class Segment
def add_stuff(param)
sales.map{ |s| s.param }.inject(:+)
end
end
问题:如何将bid
或ask
作为param
传递并在块内正确插入该参数?感谢。
答案 0 :(得分:0)
当您可以使用map
或其他查询方法时,永远不要在活动记录关联上使用pluck
,例如sum
:
def add_staff(param)
sales.sum(param)
end
仅仅为了完整性,这里是如何使用map
- 请注意,地图比查询方法慢得多且容易出错:
def add_staff(param)
sales.map {|s| s[param]} # if param is name of the column on sales model.
end
或者更一般,其中param是关联名称或自定义(非列)方法
def add_staff(param)
sales.map(¶m) # Or map {|s| s.send(param) }
end