2016-09-22 74 views
-1

我想知道是否有方法让网站上的用户在表格中插入列。在现有表格中插入列

我的情况是:管理员想每年定义一个表结构。然后管理员希望用户将数据插入到该表中。

E.g.在网站上,它可能看起来像这样: First table 在稍后的阶段,管理员想向表中添加一列,但保持数据不变。现在,表是这样的:

Additional table

你怎么能适应这个特性?我正在考虑创建一个有很多隐藏字段的模型,管理员稍后可以“取消隐藏”和命名,但我不确定这是最佳实践:)。

任何可以解决这个问题的想法将不胜感激! (我编码Ruby on Rails的,但我不认为语言是在这种情况下,尤其是相关的)

OXp1845

+0

请参阅ALTER TABLE命令的文档:http://dev.mysql.com/doc/refman/5.7/en/alter-table.html – PaulF

+0

不确定这是否可行。用户将在网站上添加额外的列 – OXp1845

+0

从您的问题,它不是完全清楚,如果它是管理员或用户添加列?首先,您问用户是否可以添加该列 - 稍后您会说这是管理员将要执行的操作。该列可以被添加,剩下的内容保持不变 - 取决于您网站的设计,页面将需要显示附加列并允许用户输入数据。 – PaulF

回答

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 

显然这是一个简单的例子,但我认为它应该让你在正确的轨道上。

+0

我认为这是正确的做法。感谢您的详细描述 – OXp1845