0

我的应用程序中有各种关联模型。我已经设置 Draper 在父类初始化时装饰关联。

我有以下课程:

Customer (has_many :accounts)
Account  (belongs_to :customer && has_many :facilities && has_one :contact)
Contact  (belongs_to :account)
Facility (belongs_to :account)

我按如下方式启动装饰器:

@customer = Customer.find_by(:token => params[:token]).decorate

在我的 account_decorator 中添加了以下内容:

decorates_association :contact
decorates_association :facilities

...在我的客户装饰器中,我有:

decorates_association :accounts

我遇到的问题是,facility_decorator 中定义的任何方法都会显示未定义的方法异常。contact_decorator 工作得非常好。我已经确定我的 AR 映射是正确的,所以不可能这样。

有什么建议么?

4

1 回答 1

0

我通过 eager_loading 关联解决了这个问题。

@customer = Customer.eager_load({ :account => [:facilities]}).find_by(:token => params[:token]).decorate

这也改善了整体查询时间,所以我对这个解决方案很满意!

于 2015-02-15T08:58:31.480 回答