我想弄清楚如何建模設備/服務關係。 我正在使用Rails 3和MongoDB/Mongoid。 Rails應用程序用於監視IP網絡。Rails模型之間的關係
- 網絡上的設備(工作站,服務器等)使用Device模型表示。
- 服務是一種服務,例如HTTP,SMTP,SSH,並且每種服務「類型」(HTTP,SMTP,SSH)都可以與許多設備關聯。
- 每個服務「類型」可能有一些選項,可以設置與 關聯的特定設備(如果HTTP服務不是 運行在端口80上,例如,HTTP可能有端口選項)。
在用戶手動添加設備的視圖中,我需要某種方式讓他們選擇 他們希望應用程序監視的服務。
此外,如果用戶嘗試運行自動設備發現,我希望通過應用程序支持的服務並查詢設備以查看設備是否支持該服務。
最後,作業以特定間隔運行,以便從數據庫中的每個設備提取新數據。 在該輪詢工作中,我需要一些方法來查詢與設備關聯的每個服務,然後保存特定於設備/服務關係的數據(服務升/降等)。這是我卡住的地方。我不知道該怎麼做。 我需要第三個模型嗎?如何在我的模型中指定這些數據? 或者我可能會說這一切都是錯誤的,並且有更好的方式來表示我想要做的 ?
這是我的模型代碼看起來像現在:
device.rb
class Device
include Mongoid::Document
field :name
field :ip_address
references_many :services
def polll
# psuedocode
for each service
query service
end
# save data back to DB
update_attributes(...)
end
end
service.rb
class Service
include Mongoid::Document
field :name
field :description
references_many :devices
end
確定。因此,如果我說Device「embeds_many:services」,我該如何指定我的應用支持哪些類型的服務(HTTP,SMTP,SSH等),以便我的自動發現或新設備視圖可以查找支持的服務? – 2011-03-18 18:29:14
好吧,這將是您用來爲您的應用程序播種的後臺作業的責任。它應該意識到,每個添加/更新的設備都已將捆綁的服務與相應的種子文檔集合結合起來。 – 2011-03-21 14:49:00
順便說一句,對不起,我花了很長時間來回答。 – 2011-03-21 14:49:42