Rails自定义包含多表关系

时间:2017-01-27 13:14:33

标签: mysql ruby-on-rails

我有以下型号:

class Girl < User
  has_many :photos, dependent: :destroy
  has_one :info, :dependent => :destroy
end

class Photo < ActiveRecord::Base
  belongs_to :girl
end

class Info < ActiveRecord::Base
    belongs_to :girl
end

我必须使用照片进行查询,而且我还需要获取有关该女孩的信息,并且我希望为那些拥有的女孩提供负载信息(并非所有女孩都必须拥有它)。

我想要类似于Photo.joins(:girl).includes(:info)的东西,但是当我尝试这样做时,它(显然)会尝试将信息与照片表相关联,从而导致此错误:

ActiveRecord::AssociationNotFoundError: Association named 'info' was not found on Photo; perhaps you misspelled it?

如何在多表查询中进行此自定义包含?

修改

我认为我使用Photo.joins(:girl).includes(:girl => :ad_info).where("photos.approved = 1 and users.profile_approved = 1")解决了这个问题 但是当我检查控制台时,我有很多不应该有的ad_info查询。

我该如何解决这个问题? queries that I should not have

1 个答案:

答案 0 :(得分:0)

这是你需要的吗?

girl.photos.where.not(info: nil)