【发布时间】:2016-05-10 13:52:02
【问题描述】:
当管理员在我们的 Rails 4 应用程序中生成新客户端时,我正在尝试自动生成“客户端编号”。
我已经阅读了几篇关于此的文章,但大多数都在谈论易碎令牌。
到目前为止,我的客户端模型只有一个 client_number 属性,它是一个字符串。
我的模型看起来像:
class Client < ActiveRecord::Base
before_save generate_client_number
validates_uniqueness_of :client_number
def generate_client_number
self.client_number = SecureRandom.hex(2).upcase
end
end
我们使用 PostgreSQL 作为我们的数据库,我对 Rails 比较陌生。将上述内容添加到我们的模型后,它会在控制台中出错,这是它抛出的错误:
NameError: undefined local variable or method `generate_client_number' for #<Class:0x007fc59bdd7008>
Did you mean? generated_attribute_methods
我有点不知所措。任何帮助将不胜感激,我相信这是我的疏忽。提前致谢。
编辑#1:
已通过修复代码错误消除了该错误。并添加
before_save :generate_client_number
但是,当我尝试创建随机字符串并保存到数据库时,我现在得到:
irb(main):013:0> Client.create
(0.1ms) BEGIN
Client Exists (0.2ms) SELECT 1 AS one FROM "clients" WHERE "clients"."client_number" IS NULL LIMIT 1
(0.1ms) ROLLBACK
=> #<Client id: nil, client_number: nil, created_at: nil, updated_at: nil>
【问题讨论】:
标签: ruby postgresql ruby-on-rails-4