在运行时创建字段

Create fields in runtime

我正在创建一个可以创建用户的新应用。例如:

User 
name:string, email:string

应用程序的一个要求是管理员将来能够为该用户创建新字段。例如:

User 
name:string, email:string, surname:string

因此管理员将能够创建新字段而无需告诉开发人员这样做。

如何实现?

您可以创建一个名为 Field 的模型来存储字段(姓名、电子邮件等)。每个用户会有很多字段,每个字段属于很多用户,所以你需要一个关联class (UserFields).

|------|          |-----------|            |-------|
| User |1--------*| UserField |*----------1| Field |
|------|          |-----------|            |-------|

例如:

 users          users_fields                         fields
-------        -------------                        --------
id             userd_id   field_id  value           id   name
1              1          1         my name         1    name
               1          2         my address      2    address
               1          3         my email        3    email

查看 rails 指南,了解如何设置有多个直通关联:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association