使用Rails 3.2,这段代码出了什么问题?
@reviews = @user.reviews.includes(:user, :reviewable)
.where('reviewable_type = ? AND reviewable.shop_type = ?', 'Shop', 'cafe')
Run Code Online (Sandbox Code Playgroud)
它引发了这个错误:
无法急切加载多态关联:可审核
如果我删除reviewable.shop_type = ?条件,它的工作原理.
如何基于reviewable_type和reviewable.shop_type(实际上shop.shop_type)进行过滤?
这是我第一次使用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是否提供了这样做的方法?