我在代码中注意到我正在研究send
经常被使用,我并不完全理解它。使用它有什么好处而不是不使事情复杂化而不使用它?
一个例子:
def star_ratings_count(rating)
self.send("#{rating}_ratings".to_sym).star.count
end
def update_star_ratings_count
self.ratings_count = star_ratings_count(:criteria_one_rating)
end
答案 0 :(得分:7)
使用send
更可取的情况有很多种。其中一些(我自己遇到)在
send
,您可以调用私有或受保护的方法。因此,您可以使用它从外部测试模型中测试这些方法。当你想在循环中调用方法时。像这样的东西
[:method1, :method2].each { |method| object.send(method) }