我想要一個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