我處理遺留數據庫,所以配置將有王牌約定..如何配置活動記錄使用某個列來獲取ID?
如何判斷當前記錄使用signature
獲取有關signatures
表信息?
這是我的事件模型:
class Event < ActiveRecord::Base
# DB Schema
# sid | cid | signature | timestamp
#----------------------------------
attr_accessible :sid, :cid, :signature, :timestamp
self.primary_keys = :sid, :cid
self.table_name = 'event'
has_many :sensors, :foreign_key => :sid
has_many :signatures, :foreign_key => :sig_id
end
這是我的簽名型號:
class Signature < ActiveRecord::Base
# DB Schema
# sig_id | sig_name | sig_class_id | sig_priority | sig_rev | sig_sid | sig_gid
attr_accessible :sig_id, :sig_name, :sig_class_id, :sig_priority, :sig_rev, :sig_sid, :sig_gid
self.table_name = 'signature'
self.primary_key = :sig_id
belongs_to :event, :foreign_key => :sig_id
belongs_to :sig_class
has_many :references, :through => :sig_references
has_many :sig_references, :foreign_key => :sig_id
end
例如。當一個事件望sid
爲4,signature
是493
[196] pry(main)> last_event
=> #<Event sid: 4, cid: 49, signature: 493, timestamp: "2014-06-25 20:22:57">
如果我看的傳感器,它使用了正確的標識,sid
。
[197] pry(main)> last_event.sensors
=> [#<Sensor sid: 4, hostname: "VS-101-Z1:dna2:dna3", interface: "dna2:dna3", filter: nil, detail: 1, encoding: 0, last_cid: 51>]
當我看簽名,其使用相同的ID sid
,不signature
[198] pry(main)> last_event.signatures
=> [#<Signature sig_id: 4, sig_name: "FILE-JAVA Oracle Java Rhino script engine remote co...", sig_class_id: 3, sig_priority: 1, sig_rev: 6, sig_sid: 23008, sig_gid: 1>]
UPDATE:
我得到它的工作,我改變了我的事件模型,以這樣的:
class Event < ActiveRecord::Base
# DB Schema
# sid | cid | signature | timestamp
#----------------------------------
attr_accessible :sid, :cid, :signature, :timestamp
self.primary_keys = :sid, :cid
self.table_name = 'event'
has_many :sensors,
:foreign_key => :sid
has_many :signatures,
:foreign_key => :sig_id,
:primary_key => :signature
end
基本上只是將:primary_key => :signature
加到has_many
。
這使得總數。我改變了這一行'belongs_to:event,:foreign_key =>:signature',但它不起作用。也許還有一些我錯過了。 – 2014-11-08 21:52:58
我認爲在事件模型這一行'自我。primary_keys =:sid,:cid'不正確,但我不確定。標準用法是'self.primary_key =:sid'單數和一個字段。 – 2014-11-08 22:00:10
Ops,'belongs_to:event,:foreign_key =>:the_key'。 'the_key'必須是存儲事件密鑰的簽名表字段。 – 2014-11-08 22:02:40