我想知道网站上的用户是否有办法在表格中插入列。
我的情况是:管理员希望每年定义一个表结构。然后管理员希望用户将数据插入到该表中。
E.g。在网站上它可能看起来像这样: 在稍后阶段,管理员希望向表中添加一个额外的列,但保持数据完好无损。该表现在看起来像这样:
您如何容纳此功能?我正在考虑创建一个包含很多隐藏字段的模型,管理员以后可以“取消隐藏”并命名,但我不确定这是最佳做法:)。
任何可以解决这个问题的想法都将不胜感激! (我在轨道上用红宝石编码,但我不认为这种语言在这种情况下特别相关)
OXp1845
答案 0 :(得分:3)
我不建议插入列,而是使用垂直属性表。例如。
admin_tables
| id | year or any other descriptor you want |
1 2015
2 2016
admin_table_columns
| id | admin_table_id | named_column |
1 1 name
2 1 description
3 1 info1
4 1 info2
5 2 name
6 2 description
7 2 info1
8 2 info2
9 2 info3
user_inputs
| id | user_id| admin_table_column_id | data |
1 1 1 input for name
2 1 2 input for description
3 1 4 input for info2
.....
这将允许管理员根据需要向“表”添加任意数量的属性,而无需动态更改现有数据或插入新列,模型可定义为:
class AdminTable < ActiveRecord::Base
has_many :admin_table_columns
has_many :user_inputs, through: : :admin_table_columns
end
class AdminTableColumn < ActiveRecord::Base
belongs_to :admin_table
has_many :user_inputs
end
class UserInput < ActiveRecord::Base
belongs_to :admin_table_column
belongs_to :user
end
显然这是一个简化的例子,但我认为它应该让你走上正轨。