2010-09-20 49 views
0

因此,我终于准备好允许一些朋友使用我在Heroku上托管的Ruby on Rails应用程序。我想在开发过程中获得一些反馈意见。如果我在实时Ruby on Rails应用程序中更改数据库,如何更新数据?

如果我需要以某种方式修改数据库会发生什么?数据库中会有数据,所以我将不得不更改数据以反映数据库中的更新,但我不确定这是如何完成的。谢谢阅读。

回答

2

通常最好的做法是为真正的用户创建一个生产数据库。 (即使你的应用程序仍处于测试阶段)。拥有一个单独的生产和开发数据库将使您的生活更轻松。

例如:开发数据库通常已经被破坏的数据,这意味着更少的虚拟数据等。

  • 在改变你的数据结构,你 可以做以下
  • 总是做一个 迁移更改(它很容易 回滚等)
  • 当您将值插入到 表中时,为此创建一个迁移。 (这将节省您从上传 相同的数据多次)
  • 当你写一个迁移,总是 确保你有适当的 回滚方法(self.down)
  • 你总是默认值

欢呼

sameera

1

你使用迁移创建数据库?如果是这样的话,那么您所要做的只是改变数据库就是创建一个迁移,在数据库中添加/删除/更改表。例如:

class AddMyColumnToMyTable < ActiveRecord::Migration 
    def self.up 
    add_column :table, :my_column, :string 
    end 

    def self.down 
    remove_column :table, :my_column 
    end 
end 

然后添加/删除数据,创建一个数据迁移,像这样:

class AddDataToMyTable < ActiveRecord::Migration 
    def self.up 
    tables = Table.all 
    tables.each do |table| 
     table.my_column = 'new value' # Put more meaningful data population here 
     table.save! 
    end 
    end 

    def self.down 
    tables = Table.all 
    tables.each do |table| 
     table.my_column = nil 
     table.save! 
    end 
    end 
end 

数据迁移可以是简单或你想他们是那么复杂。在所有情况下,数据迁移不一定是填充数据库的最佳方式,但对于简单的情况,它们工作得很好。 (不要忘记用适当的关系更新任何模型!)

如果您没有通过迁移创建数据库,则只能通过直接操作数据库来更改数据以反映对数据库的更新通过SQL。通过SQL进行操作始终是Rails应用程序中的一个选项,但迁移具有明显的优势。它们使您能够提交或回滚对数据库结构的更改,而不仅仅是数据。而且,迁移为你做了SQL工作。

相关问题