【发布时间】:2011-02-11 00:10:41
【问题描述】:
我需要在数据库中的用户表中添加一个新列。我想要设置列的类型。该列代表用户性别。该集合应该有两个选项。一种是男性“m”,另一种是女性“f”。
但我还没有找到任何文档来添加具有 set 类型的列。
我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby database migration
我需要在数据库中的用户表中添加一个新列。我想要设置列的类型。该列代表用户性别。该集合应该有两个选项。一种是男性“m”,另一种是女性“f”。
但我还没有找到任何文档来添加具有 set 类型的列。
我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby database migration
使用什么数据库? mysql?如果您想使用 SET 数据类型,则必须手动进行,因为 rails 不支持它。但是,我只会做
t.string :gender, :limit => 1
为了方便。
【讨论】:
在您的用户模型中,您应该添加以下行以要求 M/F 答案。
validates_inclusion_of :gender, :in => %w( m f M F)
【讨论】:
我认为您想添加具有默认数据类型的性别列(如果我错了,请纠正我),如果是这样,就会有步骤
这里我假设“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
就是这样,希望对你有帮助
【讨论】: