【问题标题】:Create a set column with database migration in rails在 Rails 中创建具有数据库迁移的集合列
【发布时间】:2011-02-11 00:10:41
【问题描述】:

我需要在数据库中的用户表中添加一个新列。我想要设置列的类型。该列代表用户性别。该集合应该有两个选项。一种是男性“m”,另一种是女性“f”。

但我还没有找到任何文档来添加具有 set 类型的列。

我该怎么做?

【问题讨论】:

    标签: ruby-on-rails ruby database migration


    【解决方案1】:

    使用什么数据库? mysql?如果您想使用 SET 数据类型,则必须手动进行,因为 rails 不支持它。但是,我只会做

    t.string :gender, :limit => 1
    

    为了方便。

    【讨论】:

      【解决方案2】:

      在您的用户模型中,您应该添加以下行以要求 M/F 答案。

      validates_inclusion_of :gender, :in => %w( m f M F)
      

      【讨论】:

        【解决方案3】:

        我认为您想添加具有默认数据类型的性别列(如果我错了,请纠正我),如果是这样,就会有步骤

        这里我假设“M”代表男性,“F”代表女性(如果你愿意,你也可以使用整数)

        创建迁移

        ruby script/generate migration add_gender_column_to_users
        

        这将为您创建一个迁移,顾名思义,它将向您的用户表添加一个性别列

        在你的迁移 self.up 操作中添加这个

        add_column :users, :gender, :string, :default => 'm'
        

        这里说我们正在添加一个字符串类型的性别列,其默认值为'm'

        并将其添加到 self.down 事件中

        remove_column :users, :gender
        

        所以你的最终迁移看起来像这样

        class AddGenderColumnToUsers < ActiveRecord::Migration
          def self.up
            add_column :users, :gender, :string, :default => 'm'
          end
          def self.down
            remove_column :users, :gender
          end
        end
        

        然后做一个

        rake db:migrate
        

        就是这样,希望对你有帮助

        【讨论】:

          猜你喜欢
          • 2017-09-28
          • 1970-01-01
          • 2012-09-18
          • 2018-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-27
          相关资源
          最近更新 更多