我想弄清楚如何建模设备/服务关系。 我正在使用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