Ruby 将对象的参数传递给对象方法

Ruby 将对象的参数传递给对象方法,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,这是我试图解决的问题的简化版本: 在Ruby 2.0.0、Rails 4.0.0和Activerecord中 细分市场有很多销售 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 e

这是我试图解决的问题的简化版本: 在Ruby 2.0.0、Rails 4.0.0和Activerecord中

细分市场有很多销售

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
传递,并在块中正确插入该参数?谢谢。

如果您可以使用
pull
或其他查询方法,例如
sum
,请不要在活动记录关联上使用
map

def add_staff(param)
  sales.sum(param)
end
为了完整起见,这里介绍了如何使用
map
-但是请注意,map比查询方法慢得多,而且容易出错:

def add_staff(param)
  sales.map {|s| s[param]}        # if param is name of the column on sales model.
end
或者更一般,其中param是关联或自定义(非列)方法的名称


布罗伊萨泽,谢谢……这是你第二次回答我的问题,我非常感激。我用谷歌快速搜索了一下,你为我打开了一个全新的世界。在我的开发过程中,我需要开始认真思考SQL查询,而不仅仅是勉强应付。
def add_staff(param)
  sales.map(&param)   # Or map {|s| s.send(param) }
end