1

典型的なhas_manyアソシエーションを想定

class Customer < ActiveRecord::Base
  has_many :orders
end

class Order < ActiveRecord::Base
  belongs_to :customer
end

注文のコレクションにメソッドを追加するにはどうすればよいですか?Customerコードを整理するために、クラス内でこのメソッド(これは作成された例です)を再利用しようとしています。

def update_orders
  ThirdPartyAPI.look_up(self.orders) do |order|
    # Do stuff to the orders
    # May need to access 'self', the Customer...
  end
end

Orderクラス内にクラスに関する多くの知識が含まれているため、これは好きではありませんCustomer。ThirdPartyAPIは複数の注文に対してバッチルックアップを実行できるため、注文からインスタンスメソッドを使用することはできません。Order一連の注文とその親顧客から静的メソッドを作成して渡すことはできますが、これは不格好な感じがします。

これはrailsdocsで見つかりましたが、実際にこれを使用する方法の良い例は見つかりませんでした。他に方法はありますか?

4

1 に答える 1

6

これでやればいいと思う

has_many :entities do
  def custom_function here

  end

  def custom_function here

  end 
end
于 2012-05-02T16:50:30.523 に答える