假设有一个典型的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
创建静态方法并传递订单数组及其父客户,但这感觉很笨拙。
我在rails docs中找到了这个,但我找不到任何在实践中如何使用它的好例子。还有其他方法吗?
答案 0 :(得分:6)
我认为应该这样做
has_many :entities do
def custom_function here
end
def custom_function here
end
end