我正在研究CRM平台.
我想我的用户可以添加,编辑和删除自定义字段Client
,Contact
以及Lead
对象.这些字段可以是纯文本字段,列表,复选框,标记等.这些字段可能是必需的或不是.这些字段可能具有自定义验证(用户将定义).
假设一家财务公司希望将收入增加到Client
对象,另一家公司会将订单配置添加到Lead
对象.
我的问题是否有任何"企业级"解决方案(ROR gem).
因为我知道自定义配置和配置gem,但它看起来不够可扩展.
这是一个很难的问题,但这就是我试图处理它的方法:我会将所有对象从一个CustomField
对象中派生出来,然后我会在它和一个Field
模型之间建立一对多的关系.像这样的东西:
create_table :field_types do |t| t.string :name # This would identify the fields: checkbox, plain text, etc end create_table :fields do |t| t.belongs_to :custom_field, null: false, index: true t.belongs_to :field_type, null: false, index: true t.string :name end class Field < ApplicationRecord belongs_to :custom_field belongs_to :field_type end class CustomField < ApplicationRecord has_many :fields end
这样您就可以查看数据库上的指定字段并将其挂载到视图中.
然后,我将为每种类型的字段创建一个表,用户可以使用该表来保存CustomField
对象中的数据.例如,我会检查客户端字段说明符,使用复选框A和B安装一个视图.然后,我将从复选框中获取数据并将每个数据保存在Checkboxes
带有标识符的表中,以便我可以告诉它它来了来自客户.
根据您的需要,我想到的另一个想法是将数据作为json字符串保存到数据库中.这样,您可以使用具有不同值的不同字段,您需要做的就是编码和解码以保存并从数据库加载它.
对不起,如果有点混淆..反正,希望它有所帮助