【问题标题】:How to join across polymorphic tables in one query?如何在一个查询中连接多态表?
【发布时间】:2010-10-04 20:04:26
【问题描述】:

我需要查询 2 个多态关联。

我有一个 news_article 表,它与球队、球员等具有多态关联。这些球队、球员等通过 phototenic 与照片具有多态关联。

我需要找到所有至少包含一张 500 像素宽图片的文章。

Article 模型我有一个 has_many :teams(通过多态表) 在团队中,我有一个 has_many :photos(虽然是另一个多态表)

我认为我可以使用这样的连接

Article.find(:last, :joins => {:teams => :photos}, :conditions => "photos.aspect_ratio 1.30")

但它不起作用。有什么想法吗?

【问题讨论】:

  • 你能发布你得到的错误吗?
  • 它只是挂起。日志显示文章表中的“显示字段”,仅此而已。

标签: sql ruby-on-rails activerecord polymorphic-associations


【解决方案1】:

希望这是您的设置...

class Article < ActiveRecord::Base
  has_many :teams
end

class Team < ActiveRecord::Base
  has_many :photos
end

class Photo < ActiveRecord::Base
  belongs_to :teams
end

您能否使用以下查询并告诉我们它是否适合您?

Article.find(:last, :include => {:teams => :photos}, :conditions => "photos.aspect_ratio < 1.55 AND photos.aspect_ratio > 1.30")

希望对你有帮助...

rgds, Sourcebits 团队

【讨论】:

    【解决方案2】:

    如果您已经在使用 Rails 3:

    Article.joins(:teams).where(condition).joins(:photos).where(condition)
    

    如果您使用的是 Rails 2.3.8:

    Article.find(:all, :include => {:teams => :photos}, :conditions => [YOUR CONDITIONS])
    

    希望对你有帮助...

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 2017-10-23
      • 1970-01-01
      相关资源
      最近更新 更多