Ruby on rails Rails:与深度关联的查找

Ruby on rails Rails:与深度关联的查找,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有一些模型: 广告语 class-Ad{where(state:“published”)} 结束 car.rb class Car < Ad end class-Car

我有一些模型:

广告语

class-Ad{where(state:“published”)}
结束
car.rb

class Car < Ad

end
class-Car
经销商.rb

class Dealership < ActiveRecord::Base

  belongs_to :agent
  has_many :cars, as: :seller

end
class经销商
agent.rb

class Agent < User

  has_one :dealership, dependent: :destroy

end
class代理
user.rb

class User < ActiveRecord::Base

  has_many :ads, as: :seller
  has_many :subscriptions

  def has_valid_subscription?
    !Subscription.valid(self.id).blank?
  end

end
class用户
我知道有很多多态性。。。但我尽量使数据库简单。 我清理所有模型以关注问题

我试图得到所有的广告谁有一个有效的订阅用户卖家

但我的模型之间有两个层次的关联。。。我不能得到它

你能告诉我怎么做吗


非常感谢。

卖家\用户
关联添加到广告模型

class Ad < ActiveRecord::Base
  belongs_to :seller, polymorphic: true
  belongs_to :seller_user, :foreign_key => :seller_id, :class_name => "User", conditions: { ads: { seller_type: "User"}}
  scope :published, -> { where(state: "published") }
end
如果你只需要订阅用户的所有广告,你可以这样做

Ad.all.collect{|ad| ad.seller_user && ad.seller_user.has_valid_subscripion?}
Ad.joins(:seller_user => :subscriptions)

只需补充一些信息:

Ad.all.collect{|ad| ad unless !(ad.seller_user && ad.seller_user.has_valid_subscripion?)}
如果你不做除非部分,你将有一个美丽的布尔数组


但这让我找到了我想要的

太多了!这就是我想做的!
Ad.all.collect{|ad| ad unless !(ad.seller_user && ad.seller_user.has_valid_subscripion?)}