使用rails创建一个包含数据库迁移的set列

时间:2010-04-22 10:19:58

标签: ruby-on-rails ruby database migration

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

但是我没有找到任何添加具有集合类型的列的文档。

我该怎么做?

3 个答案:

答案 0 :(得分:7)

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

t.string :gender, :limit => 1

为方便起见。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

我想你想添加一个带有默认数据类型的性别列(如果我错了,请纠正我),如果有的话会有步骤

这里我假设'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

就是这样,希望这会有所帮助