2

私が取り組んでいるコードで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
4

1 に答える 1

8

を使用することが望ましい場合は、多くの状況が考えられますsend。それらのいくつか(私が自分で会った)を以下に示します

  1. 本当のメソッド名がわからないとき。あなたの例のように。
  2. プライベートまたは保護されたメソッドを呼び出すことsendができます。したがって、テストされたモデルの外部からこれらのメソッドをテストする際に使用できます。
  3. ループでメソッドを呼び出したいとき。このようなもの

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

于 2012-09-12T22:38:54.907 に答える