複数のモデルの概要を表示するダッシュボードが必要で、独自のデータなしで 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 クラスである場合、宣言するとデリゲートが自動的に機能します (つまり、Account は、Dashboard インスタンスに等しいDashboard#belongs_to :account
アカウントからアドレス属性を返す必要があることを認識します)。user_id
to user_id
しかし、Dashboard は ActiveRecord クラスではないため、宣言できませんbelongs_to
。アカウントに正しいレコードを検索するように指示する別の方法が必要です。
この問題を克服する方法はありますか? (Dashboard を空のテーブルに偽装したり、User のインスタンス メソッドを引数を取るクラス メソッドに書き換えたりできることはわかっています。しかし、これらの解決策はすべて裏技です)。
ありがとうございました。