ロケーション>ホットスポット>アカウントの3つのモデルがあります
私の場所モデルでは、これがあります:
has_many :hotspots
has_many :accounts, :foreign_key => :calledstationidclean, :through => :hotspots
各場所のアカウント モデルから要約データを表示しようとしています。
以下は正常に動作します:
scope :location_history, lambda { |id|
joins('INNER JOIN hotspots b ON locations.id = b.location_id INNER JOIN account ON b.mac = account.calledstationidclean')
.where(:id => id)
.select("count(locations.id) AS sessions_count, sum(account.acctoutputoctets) AS downloads, sum(account.acctinputoctets) AS uploads, count(distinct account.callingstationid) AS unique_user")
}
しかし、いくつかの計算を実行する必要があり、これを行う方法がわかりません。
通常、アカウント モデルでは、次のようなことができます。
def self.session_time
Account.sum("acctsessiontime")
end
def self.average_session
self.session_time / Account.count
end
同様のことを自分の位置モデルで行うにはどうすればよいですか?また、表示している特定の位置の情報のみを表示するにはどうすればよいですか? 実際に結合を実行する必要がありますか?