相关疑难解决方法(0)

渴望加载多态

使用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_typereviewable.shop_type(实际上shop.shop_type)进行过滤?

activerecord ruby-on-rails ruby-on-rails-3

98
推荐指数
3
解决办法
4万
查看次数

渴望在ActiveRecord中加载多态关联

这是我第一次使用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是否提供了这样做的方法?

activerecord ruby-on-rails polymorphic-associations

6
推荐指数
1
解决办法
5011
查看次数