我想要一个仪表板来显示多个模型的摘要,并且我使用 Presenter 实现了它,而没有它自己的数据。我使用一个 ActiveModel 类(没有数据表):
class Dashboard
attr_accessor :user_id
def initialize(id)
self.user_id = id
end
delegate :username, :password, :to => :user
delegate :address, :to => :account
delegate :friends, :to => :friendship
end
通过代表,我希望能够打电话Dashboard.address
回来Account.find_by_user_id(Dashboard.user_id).address
。
如果 Dashboard 是一个 ActiveRecord 类,那么我可以声明Dashboard#belongs_to :account
并且委托会自动工作(即,Account 会知道它应该从具有user_id
等于to user_id
Dashboard 实例的帐户返回地址属性)。
但是 Dashboard 不是 ActiveRecord 类,所以我不能声明belongs_to
. 我需要另一种方法来告诉 Account 查找正确的记录。
有没有办法克服这个问题?(我知道我可以伪造 Dashboard 以获得一个空表,或者我可以将 User 的实例方法重写为带参数的类方法。但这些解决方案都是 hack)。
谢谢你。