簡體   English   中英

如何在 Rails 中生成序列碼字符串

[英]How to generate a sequence code string in Rails

我有一個 model 有一個名為code的列,它是模型的 name 列及其 ID 與前導零的組合。

name = 'Rocky'
id = 16

我有一個after_create回調,它運行並生成代碼:

update(code: "#{self.name[0..2].upcase}%.4d" % self.id)

生成的代碼將是:

"ROC0016"

代碼正在運行。

我從另一個項目中找到了(%.4d" % self.id) ,但我不知道它是如何工作的。

它如何根據傳遞的 integer 確定要在前面的零的數量。

您正在使用“格式說明符”。 有許多說明符,但您使用的一個"%d"是十進制說明符:

%啟動它。 4表示它應該始終使用至少四個數字,因此如果數字只有兩位數,則用0填充以填充數字的 rest。 第二個%表示將4d替換為它之后的任何內容。 因此,在您的情況下, 4d將被替換為"0016"

sprintf有更多關於格式說明符的信息。

您還可以在文檔中閱讀有關String#%的更多信息。

百分號 (" % ") 后面是一個小數 ( "." ) 和一個數字。 該數字是結果中的總位數。 如果結果小於此值,將添加額外的零。

因此,在第一個示例中,結果為“34”,但長度設置為“ 4 ”。 結果將有兩個前導零以將其填充為四位數字。

"This is test string %.4d" % 34
result => "This is test string 0034"

"I want more zeroes in my code %.7d" % 34
result => "I want more zeroes in my code 0000034"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM