gpt4 book ai didi

ruby-on-rails - 如何(替换|创建)rails 2.0 迁移中的枚举字段?

转载 作者:数据小太阳 更新时间:2023-10-29 06:26:44 25 4
gpt4 key购买 nike

我想在我正在进行的迁移中创建一个枚举字段,我尝试在谷歌中搜索但我找不到在迁移中执行此操作的方法

我唯一找到的是

  t.column :status, :enum, :limit => [:accepted, :cancelled, :pending]

但看起来上面的代码只在 rails 1.xxx 上运行,因为我正在运行 rails 2.0

这是我尝试过的但是失败了

class CreatePayments < ActiveRecord::Migration
def self.up
create_table :payments do |t|
t.string :concept
t.integer :user_id
t.text :notes
t.enum :status, :limit => [:accepted, :cancelled, :pending]

t.timestamps
end
end

def self.down
drop_table :payments
end
end

那么,如果不允许这样做,您认为什么是好的解决方案?只是一个文本字段,并从模型中验证?

最佳答案

您可以使用 t.column 方法手动指定类型。 Rails 会将其解释为一个字符串列,您可以像 Pavel 建议的那样简单地向模型添加一个验证器:

class CreatePayments < ActiveRecord::Migration
def self.up
create_table :payments do |t|
t.string :concept
t.integer :user_id
t.text :notes
t.column :status, "ENUM('accepted', 'cancelled', 'pending')"

t.timestamps
end
end

def self.down
drop_table :payments
end
end

class Payment < ActiveRecord::Base
validates_inclusion_of :status, :in => %w(accepted cancelled pending)
end

关于ruby-on-rails - 如何(替换|创建)rails 2.0 迁移中的枚举字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/693928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com