我希望有一种关系
has_many :foos, :through => :multiple
模型
网站:
has_many :pages
has_many :files
页:
belongs_to :site
has_many :legacy_url_redirects, as: :redirect_resourceable
文件:
belongs_to :site
has_many :legacy_url_redirects, as: :redirect_resourceable
LegacyUrlRedirects
belongs_to :redirect_resourceable, :polymorphic => true
我想做的是在Site
模型中添加如下内容:
has_many :legacy_url_redirects, :through => [:pages, :files]
或者同样好的选择。
感谢。
修改
这是我做的: 网站模型:
def legacy_url_redirects(options = {})
file_where = {"files.site_id" => self.id}.merge(options)
page_where = {"pages.site_id" => self.id}.merge(options)
LegacyUrlRedirect.includes(:file).where(file_where) + LegacyUrlRedirect.includes(:page).where(page_where)
end
我还在https://stackoverflow.com/a/16124295/1141264
的帮助下将:pages
和:files
关系添加到LegacyUrlRedirects
模型
第二次编辑:
我重新修改了一下这个修补程序,以便在三个表之间手动编写LEFT OUTER JOIN
。在进行连接时也没有指定查询的选择部分,对返回的记录隐含@readonly = true
。