【问题标题】:One time change model attribute (column name) in Ruby on Rails在 Ruby on Rails 中一次性更改模型属性(列名)
【发布时间】:2011-06-05 18:58:44
【问题描述】:

我创建了一个具有“名称”属性的模型,但我想将其更改为“用户名”。我读过的关于数据库迁移的所有内容都涉及创建一个类或一些复杂的东西。我想做的只是相当于 SQL 中的“UPDATE TABLE”。您如何运行一次性数据库迁移来改变这一点?我猜它会涉及到 Rails 控制台,然后是一些命令?

【问题讨论】:

    标签: ruby-on-rails database migration


    【解决方案1】:

    第一:

    rails g migration rename_name_column_to_username
    

    然后在生成的rename_name_column_to_username.rb迁移文件中:

    class RenameNameColumnToUsername < ActiveRecord::Migration
      def self.up
        rename_column :users, :name, :username
      end
    
      def self.down
        rename_column :users, :username, :name
      end
    end
    

    然后rake db:migrate

    【讨论】:

      【解决方案2】:

      如果您尚未提交最初创建“名称”列的代码,您可以进入创建该列的旧迁移文件并将name 更改为username,然后重新生成架构。

      但是如果你已经提交了代码,你应该创建一个单独的迁移文件,将name重命名为username

      这对于跟踪数据库的版本控制很重要。因此,您永远不应该真正使用手动 SQL (ALTER TABLE ...) 来更改架构。

      【讨论】:

        【解决方案3】:

        运行rails g migration RenameNameToUsername,这将在db/migrate中创建一个新文件。

        打开该文件,并将其添加到 self.up 部分:

        rename_column :tablename, :name, :username
        

        然后运行rake db:migrate

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-14
          相关资源
          最近更新 更多