2016-01-20 97 views
1

我在我的Rails應用程序的多個模型軌關聯檢索記錄

class SnapshotReport < ActiveRecord::Base 
    establish_connection "evercam_db_#{Rails.env}".to_sym 

    belongs_to :camera 

    def self.add_report 
    camera_report = Snapshot.connection.select_all("select camera_id,count(*) as snapshot_count from snapshots where created_at in (select created_at from snapshots where created_at >= 'now'::date - 1 and created_at >= 'now'::date - 1) group by camera_id").to_hash 

    camera_report.each do |camera| 
     SnapshotReport.create(camera_id: camera["camera_id"], snapshot_count: camera["snapshot_count"], report_date: Date.yesterday) 
    end 
    end 
end 

並且有兩個攝像頭和用戶模型爲好,我得到了日期snapshot_report爲SnapshotReport.find_by_report_date("01/19/2016")但保存這@report,我想到上視圖顯示來自用戶和攝像頭的一些數據,以及如上述查詢的

user = who is owner of the camera 
exid = which is of camera 

結果是

#<SnapshotReport id: 40, camera_id: 5992, created_at: "2016-01-20 08:25:11", report_date: "2016-01-19 00:00:00", snapshot_count: 345> 

我的其他協會都

class Camera < ActiveRecord::Base 
    establish_connection "evercam_db_#{Rails.env}".to_sym 

    belongs_to :user, :foreign_key => 'owner_id', :class_name => 'EvercamUser' 
    belongs_to :vendor_model, :foreign_key => 'model_id', :class_name => 'VendorModel' 
    has_many :camera_shares, dependent: :delete_all 
    has_many :snapshot_report, foreign_key: "camera_id", class_name: "SnapshotReport" 

用戶

class EvercamUser < ActiveRecord::Base 
    establish_connection "evercam_db_#{Rails.env}".to_sym 

    self.table_name = "users" 
    belongs_to :country 
    has_many :cameras, :foreign_key => 'owner_id', :class_name => 'Camera' 
    has_many :snapshots 
    has_many :vendors 
    has_many :camera_shares, :foreign_key => 'user_id', :class_name => 'CameraShare' 

回答

1

你可以得到通過關聯用戶和攝像頭的信息。

user = @report.camera.user 
exid = @report.camera.exid