ruby-on-rails – ActiveRecord :: EagerLoadPolymorphicError:
class Transaction < ActiveRecord::Base belongs_to :account,:polymorphic => true end class Bankaccount < ActiveRecord::Base has_many :transactions,:as => :account end class Creditcard < ActiveRecord::Base has_many :transactions,:as => :account end 尝试对帐户处于活动状态的交易进行总和. Transaction.sum(:all,:conditions => "account.status = 'active'",:include => :account) 所以经过一番阅读,我遇到了这个: 解决方法
这里有两个问题:
>对多态关联进行求和. 你实际上不能做这些事情之一.所以你应该得到相同的错误,执行这两个查询: > Transactions.count(:all,:joins =>:account) 要实际获取您需要的信息,您必须明确列出可能的父多态关联.一种方法是简单地使用SQL和LEFT JOINS,以便您可以使用单个查询.使用Rails这可以用两个查询来执行: Creditcard.sum( :all,:select => "transactions.amount",:conditions => "creditcards.status = 'active'",:joins => :transaction ) + Bankaccount.sum( :all,:conditions => "bankaccounts.status = 'active'",:joins => :transaction ) P.S:最好使用:join而不是:include,如果您不打算在查询后访问加入的对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |