0

我是 Rails 新手,遇到以下问题:

对于人类可读的客户 ID,我需要一个持久类变量(我认为)。客户类是单表继承设置中联系人类的子类,因此数据库生成的 ID 没有用处,因为它不是线性上升的。

我想我需要一个类变量或全局变量来实现一种计数器/id(它不是count方法,因为可以删除客户)。我对么?在这种情况下,类变量需要以某种方式保存到数据库中,对吗?

我有点迷失了

  1. 如何保存
  2. 何时增加它:我必须重写新方法,调用第一个超级?
  3. 如果应用程序需要在某个时候重新启动,如何加载该值

.

我是否应该更喜欢 Multible Table Inheritence 设置并使用数据库 ID?这将是一个遗憾,因为两个类中超过 90% 的字段是相同的。

4

1 回答 1

1

为什么你的 ID 是线性的?为什么它不是线性的?

我认为你在某个地方出错了,但万一我误解了你,你可以添加一个迁移(在你的 Customer 表中添加一个属性 'generatedID')并编写一个方法,如下所示:

def generateID
  if Customer.all.count == 0
   1
  else
    Customer.last.generatedID + 1
  end
end

然后当您保存 Customer 对象时:

@customer = Customer.new(params[:user])
@customer.generatedID = generateID
@customer.save!

但这确实是一个糟糕的方法,您总是可以读取对象的 id 并将其显示给用户,我真的不确定它不会是线性的。

于 2013-03-07T10:24:43.013 回答