我有一个整数字段(银行帐号)。在将其保存在rails中时,如果其中包含任何先前的零,那么将由rails自动修剪(删除)零,如下所示。
.gems :086 > bank_detail = BankDetail.new
=> #<BankDetail id: nil, account_name: nil, account_no: nil, bank_name: nil, branch_name: nil, ifsc_code: nil, user_id: nil, created_at: nil, updated_at: nil>
.gems :087 > bank_detail.account_no = "0123456"
=> "0123456"
.gems :089 > bank_detail.save(:validate => false)
(0.2ms) BEGIN
SQL (0.5ms) INSERT INTO "bank_details" ("account_no", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["account_no", 123456], ["created_at", "2018-07-17 15:47:35.062139"], ["updated_at", "2018-07-17 15:47:35.062139"]]
(22.7ms) COMMIT
=> true
.gems :090 >
.gems :090 > BankDetail.last
BankDetail Load (0.6ms) SELECT "bank_details".* FROM "bank_details" ORDER BY "bank_details"."id" DESC LIMIT 1
=> #<BankDetail id: 21, account_name: nil, account_no: 123456, bank_name: nil, branch_name: nil, ifsc_code: nil, user_id: nil, created_at: "2018-07-17 10:17:35", updated_at: "2018-07-17 10:17:35">
.gems :091 >
由于银行帐号中包含前导零,因此我想使用rails来保存数字字段以及前缀零。我该怎么办?
答案 0 :(得分:5)
答案很简单:银行帐号可能看起来像一个数字,但不应以整数形式存储。改为使用字符串列。
经验法则是:当数字对数学没有意义时,请勿使用整数列作为数字,例如帐号,邮政编码,序列号
答案 1 :(得分:0)
好像您的account_no
字段在数据库中是数字。
您可以进行迁移以使其成为字符串。
答案 2 :(得分:0)
最好为account_no
列输入字符串类型。然后,您可以根据需要使用.to_i
将'0000123'
转换为123
。