我想要一个Dashboard来显示多个模型的摘要,并且我使用Presenter实现了它,但没有自己的数据。我使用一个类加载ActiveModel(无数据表):如何将参数传递给Rails中的委托方法
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
。
如果仪表板是一个ActiveRecord类,那么我可以宣布Dashboard#belongs_to :account
和代表将工作自动(即客户会知道它应该从帐户返回地址属性与user_id
在Dashboard例如等于to user_id
)。
但仪表板不是ActiveRecord类,所以我不能声明belongs_to
。我需要另一种方式告诉帐户查找正确的记录。
有没有办法解决这个问题? (我知道我可以假装仪表板有一个空表,或者我可以将用户的实例方法重写为需要参数的类方法,但这些解决方案都是黑客)。
谢谢。
这没有多大意义。什么是'id'?这应该是一个数字吗? (你不能'发送(“123”)',这不是一个有效的方法名称。)你不能使用'Dashboard.user_id'和'attr_accessor:user_id',一个是类,另一个是实例。 ..请澄清并举例说明你如何期望这项工作。 –
嗨安迪,可能我不够清楚。请注意,这不是一个常规的ActiveRecord :: Base类。因此,我需要一个属性来保存current_user的id。 (我不想永久保留这个ID)。通过委托,我希望能够调用Dashboard.address并获取Account.find_by_user_id(Dashboard.user_id).address。我试图将此函数委托给Account类,但我需要以某种方式将user_id值传递给Account,以便它知道应该使用哪个帐户实例。 – AdamNYC