拦截 has_many 关联调用

Intercept has_many association call

有两种型号

class Order < ...
  has_many :products
  def products
    products.count.zero? ? <some action> : products  
  end
end

class Product < ...
end

我需要拦截订单产品调用:Order.first.products 以在没有产品或 return 关联产品(如果有)的情况下用一些自定义逻辑替换输出。 我试过 read_attribute 但没有成功。

您可以简单地扩展或覆盖您需要的任何方法:

class Order < ActiveRecord::Base
  def products
    my_logic || super
  end
end