动态子属性

问题描述 投票:0回答:1

所以我需要有一个架构,允许一个对象拥有多个子对象,并且这些子对象具有不同的动态属性。以此为例:

restaurants table
-----------------
id int primary_key unique not null
name varchar(50) not null

restaurants_equipment table
---------------------------
restaurant_id int
equipment_id int
??? JSON values of properties ???

equipment table
---------------
id int primary_key unique not null
name varchar(50) not null
??? JSON of available properties per equipment ???

在上面的表格中“???”表明这是否是最佳方法。见下面的解释。

所以,想象一下,如果您愿意并且为了简单起见,那里有2个餐厅记录和3个设备记录。表中的三个记录是“烤箱,微波炉和炉子”。烤箱具有需要存储max_temperature(整数),racks_space(机架大小数组)的属性。 Microwave具有max_timer(整数),popcorn_setting(boolean)的属性。 Stove具有num_of_tops(整数),stove_type(整数)的属性。

正如您所看到的,每件设备都可以具有任何类型的动态属性,这些属性也需要与餐厅相关联,并具有该设备可能具有的价值。

所以,我的问题是在设备中每个记录具有动态属性的最佳方法是什么,并且这些值要适当地存储在设备和特定餐厅之间的关系中,并且能够处理用户输入的这些属性的约束(即存储约束信息) ,等等?)?

ruby-on-rails json design-patterns database-design
1个回答
0
投票

你有2个选择: 选项#1 :(对于许多设备) 如果数据仅供查看,您可以在文本字段中以JSON格式保存设备规格,并在后端(模型)或前端(javascript或其他库)将字符串解析为JSON格式,以显示ERB文件中的数据。

选项#2 :(设备数量有限) 为每个设备规范创建表,并使用多态关联。

http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

© www.soinside.com 2019 - 2024. All rights reserved.