在Ruby on Rails中自定义呈现对象id的格式

时间:2014-08-21 06:56:35

标签: ruby-on-rails yaml

在我的应用程序中,我有模型User,就像Rails应用程序中的每个模型都有一个id。问题是如何自定义此ID以在格式中显示它而不是1而是#0001。有没有办法使用yml文件?

3 个答案:

答案 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"