在我的应用程序中,我有模型User,就像Rails应用程序中的每个模型都有一个id。问题是如何自定义此ID以在格式中显示它而不是1而是#0001。有没有办法使用yml文件?
答案 0 :(得分:2)
如果您计划的用户数少于10000,则可以通过
生成此类字符串module UsersHelper
def format_id user_id
"##{user_id.to_s.rjust(4, '0')}"
end
end
并在视图中:
<%= format_id user.id %>
但是,只要用户ID高于9999,也请考虑您的想法的格式。
答案 1 :(得分:1)
<强>吸气剂强>
这可能不起作用,因为您正在更改primary_key
(这是ActiveRecord /关系数据库的核心功能),但我建议为您的请求设置一个特定的getter
:
#app/models/user.rb
Class User < ActiveRecord::Base
def id
"#{self[:id].to_s.rjust(4, '0')}" #-> from tobago's answer
end
end
这将允许您致电@user.id
并将#000x
作为ID返回,但实际的id
属性仍会保留为1
等
答案 2 :(得分:0)
答案是:
我创建了一个帮手:
def format_id customer_id
"#{t('customer_prefix')}#{customer_id.to_s.rjust(5, '0')}"
end
并将customer_prefix存储在en.yml
中en:
customer_prefix: "CC"