Goa*_*lie 2 ruby oop ruby-on-rails
我已经在代码中注意到我正在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
Run Code Online (Sandbox Code Playgroud)
使用时可能有很多种情况send.其中一些(我自己遇到)下面
send你可以调用私有或受保护的方法.因此,您可以使用它从外部测试模型测试这些方法.当你想在循环中调用方法.像这样的东西
[:method1, :method2].each { |method| object.send(method) }