Way*_*See 6 activerecord ruby-on-rails polymorphic-associations
这是我第一次使用Rails,我想知道是否可以在一个SQL查询中加载一个多态关联?它们之间的模型和关联足够基本:资产模型/表可以通过多态关联引用内容(图像,文本或音频),即
class Asset < ActiveRecord::Base :belongs_to :content, :polymorphic => true end
图像,文本,音频定义如下:
class Image < ActiveRecord::Base :has_one :asset, :as => :content end
当我尝试加载图片时,请这样说:
Image.first(
:conditions => {:id => id},
:include => :asset
)
它指定了两个查询,一个用于检索Image,另一个用于检索资产(FYI,如果我指定a,也会发生这种情况:joins).根据我的理解,ActiveRecord这样做是因为它不知道Image和Asset之间存在一对一的关联.有没有办法强制连接并一次检索2个对象?我也尝试使用自定义选择连接,但我最终必须手动创建ActiveRecord模型及其关联.
ActiveRecord是否提供了这样做的方法?
在深入研究 Rails 源代码后,我发现您可以通过在 select、conditions 或 order 子句中引用当前模型以外的表来强制连接。
因此,如果我在资产表上指定订单:
图片.first(
:条件=> {:id => id},
:包括=>:资产,
:order => "资产.id"
)
生成的 SQL 将使用左外连接以及一条语句中的所有内容。我更喜欢内部联接,但我想现在就可以了。
| 归档时间: |
|
| 查看次数: |
5011 次 |
| 最近记录: |