是否可以动态更改Rails中的Schema?

时间:2014-01-09 07:38:49

标签: ruby-on-rails

我想创建新表,在我的应用中添加/删除列。这可能吗?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用ActiveRecord :: Base.connection.execute执行应用程序数据库用户可以对数据库执行的任何操作。例如:

ActiveRecord::Base.connection.execute('ALTER TABLE people ADD name VARCHAR(60);')

但是,如果向表中添加列,则在重新启动应用程序之前,ActiveRecord类中的列的相应属性将不可用。

答案 1 :(得分:0)

没有。这不可能。 Rails必须运行迁移才能将表送入数据库。这要求在迁移后停止并重新启动服务器。您不希望这种情况投入生产。

动态表单将实现我相信你所追求的目标。

简而言之,您将模型的字段设为单独的模型。例如

class Car 
  has_many :car_fields
end 

class CarFields
  belongs_to :car
end

然后,您可以创建一个表单,用户可以在将数据库添加到数据库时添加和删除字段。

Ryan Bates在http://railscasts.com/episodes/403-dynamic-forms

解释了这一点

我认为您需要订阅才能观看。我没有,得到一个。 Railscasts很棒!