gpt4 book ai didi

ruby-on-rails - 限制 Rails 迁移中的整数大小

转载 作者:行者123 更新时间:2023-11-29 11:32:50 27 4
gpt4 key购买 nike

如何在 Rails 4 迁移中指定整数大小限制? (我的数据库是 PostgreSQL。)

我有 phone_number 字段,长度应为 8 位。如果我指定 :limit => 8,那么这是字节大小而不是数字的长度。

有办法吗?

最佳答案

你的做法全错了。电话号码根本不是数字,电话号码是一个包含(大部分)数字字符的字符串。您不会对电话号码进行任何数字运算(例如算术运算),因此它们不是数字,而是字符串。

将您的 phone_number 列设为长度为八的字符串:

t.string :phone_number, limit: 8

并清理它并验证模型中的格式:

before_validation :clean_up_phone_number
validates :phone_number,
format: { with: /\A\d{8}\z/ },
length: { maximum: 8 },
allow_nil: true

def clean_up_phone_number
# Do whatever you want or need to strip out spaces, hyphens, etc. in here
end

或者使用 PostgreSQL 更好,根本不用担心数据库的大小,使用 t.string :phone_number。大小限制只会增加无意义的开销,使用普通 varchar 而不是 varchar(8) 可以更轻松地允许不同的电话号码格式(区号、分机、国际数字,...) 稍后。

关于ruby-on-rails - 限制 Rails 迁移中的整数大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578718/

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