2012-09-12 29 views
2

我注意到在代碼中,我正在努力,send已被頻繁使用,我不完全理解它。使用它的好處是什麼,而不是使事情複雜化,不使用它?在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 
+1

元編程的東西變得容易 – apneadiving

回答

7

send使用時可能有許多情況下是優選的。其中一些(我自己認識的)低於

  1. 當你不知道真正的方法名稱。就像你的例子。
  2. 隨着send你可以調用私人或受保護的方法。所以你可以用它來測試這些來自外部測試模型的方法。
  3. 當你想在循環中調用方法。這樣

    [:method1, :method2].each { |method| object.send(method) }

相關問題