Rails - 使用has_many关联查询

时间:2012-08-12 09:22:36

标签: ruby-on-rails activerecord

我目前正在尝试在模型上创建自定义方法,其中使用的条件是has_many关联的条件。我到目前为止的方法是:

class Dealer < ActiveRecord::Base

  has_many :purchases

  def inventory
    inventory = Vehicle.where(:purchases => self.purchases)
    return inventory
  end

end

这不起作用,因为Vehicle has_many:购买(因此车辆模型上没有列“购买”)。如何在这种查询中使用vehicle.purchases数组作为条件?

为了使问题复杂化,has_many也是多态的,所以我不能简单地在查询上使用.join(:purchases)元素,因为没有VehiclePurchase模型。

编辑:为清楚起见,我的购买模型和车型的相关部分如下:

class Purchase < ActiveRecord::Base
  attr_accessible :dealer_id, :purchase_type_id

  belongs_to :purchase_item_type, :polymorphic => true

end

class Vehicle < ActiveRecord::Base

  has_many :purchases, :as => :purchase_item_type

end

2 个答案:

答案 0 :(得分:0)

class Dealer < ActiveRecord::Base
  def inventory
    Vehicle.where(:id => purchases.where(:purchase_item_type_type => "Vehicle").map(&:purchase_item_type_id))
  end
end

或者:

  def inventory
    purchases.includes(:purchase_item_type).where(:purchase_item_type_type => "Vehicle").map(&:purchase_item_type)
  end

答案 1 :(得分:0)

我能够使用Vehicle模型上的:source和:source_type选项来实现这一点,它允许多态父项关联。