0

我有一个带有以下模型的简单 Rails 3 发票应用程序:

Brand
Client
Invoice

一个品牌有很多张发票,客户有很多张发票,发票属于客户和品牌。基本上,品牌是创建发票的公司,客户是发票的接收者,发票是实际发票。

我正在尝试找出最好的方法,让每张发票都有一个简单的随机参考号,每个发票都以每个品牌独有的东西为前缀。

我正在考虑将 invoice_prefix 添加到品牌表中。然后每个品牌都有一个三位数的前缀,例如DAN-.

将品牌前缀后跟 5 位随机数添加到发票表中的列的最佳方法是什么?

我愿意接受有关更好方法的建议!

我想要的最终结果是每张发票都有一个类似于DAN-98372.

我认为最好的方法是将前缀列添加到品牌表中,然后为发票创建一个 before_create 操作,在品牌前缀之后插入一个随机数。我只是不确定最好的方法来做到这一点。

before_create :generate_reference

private
def generate_reference
  self.invoice_number = self.brand.prefix
end

上面的代码正确地提取了品牌前缀,但我不确定之后如何添加一个随机的 5 位数字。

我认为类似的东西<%= rand(1000..9999) %>会起作用,但我不确定如何将其添加到 before_create 中的品牌前缀中。

我对 after_create 方法不是很熟悉,所以任何建议都将不胜感激!

4

3 回答 3

1

从提供的信息来看,它是多态关联的一个案例。参考http://guides.rubyonrails.org/association_basics.html

在提供的代码中,您应该调用“generate_reference”“before_create”而不是“after_create”,因为您希望保存分配的值。指定“after_create”将进入无限循环。

于 2013-04-04T11:56:41.617 回答
1

您可以使用

https://github.com/patdeegan/integer-obfuscator

https://github.com/namick/obfuscate_id

这样你就可以隐藏你真正拥有的发票数量并且它是独一无二的

于 2013-04-04T11:59:33.163 回答
0

生成随机数据资源

https://github.com/wemersonblend/fakejs

于 2013-11-07T13:01:51.810 回答