Ruby on rails 在Rails上使用send-in Ruby有什么好处?

Ruby on rails 在Rails上使用send-in Ruby有什么好处?,ruby-on-rails,ruby,oop,Ruby On Rails,Ruby,Oop,我注意到,在我正在编写的代码中,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_ratin

我注意到,在我正在编写的代码中,
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

在许多情况下,最好使用
send
。下面是其中一些(我自己遇到的)

  • 当您不知道真正的方法名时。就像你的例子一样
  • 使用
    send
    可以调用私有或受保护的方法。所以您可以使用它从外部测试的模型测试这些方法
  • 当您想在循环中调用方法时。像这样的

    [:method1,:method2]。每个{method | object.send(method)}