Ruby 将对象的参数传递给对象方法
这是我试图解决的问题的简化版本: 在Ruby 2.0.0、Rails 4.0.0和Activerecord中 细分市场有很多销售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
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(¶m) # Or map {|s| s.send(param) }
end