【发布时间】:2012-03-31 04:58:44
【问题描述】:
我有以下几点:
class BaseReseller < ActiveRecord::Base
set_table_name "resellers"
acts_as_nested_set
has_many :merchants, :as => :merchant_owner, :dependent => :destroy
end
class IPSP < BaseReseller
end
class Agent < BaseReseller
end
class Reseller < BaseReseller
end
class Merchant < ActiveRecord::Base
belongs_to :merchant_owner, :polymorphic => true
end
class MerchantsController < ApplicationController
...
def index
...
@merchants = Merchant.joins(:merchant_owner) # breaks!
end
end
注意我是如何尝试使用多态的 Merchant_owner 加入商家并得到这个:ActiveRecord::EagerLoadPolymorphicError: Can not eagerly load the polymorphic association :merchant_owner。
@merchants = Merchant.includes(:merchant_owner) 最初可以工作,但是当我开始迭代视图中的 @merchants 数组时,它会因相同的错误而中断 - 似乎是这样,因为我们使用延迟加载的关系并且仅当调用非 Arel 方法时,它实际上会转到 DB。
有什么想法吗? Arel 是否支持多态关联连接?任何解决方法?我可以直接使用纯 SQL,但这太麻烦了。
谢谢
【问题讨论】:
标签: ruby-on-rails activerecord associations arel