rails持久化类变量

时间:2013-03-07 10:06:47

标签: ruby-on-rails class variables persistent

我是rails的新手,我遇到了以下问题:

我需要一个持久的类变量(我认为)用于人类可读的客户ID。 customer类是Single Table Inheritance设置中的联系人类的子类,因此数据库生成的ID不是有用的,因为它不是线性升序。

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

我有点失落

  1. 如何保存
  2. 当完全递增它时:我必须覆盖新方法, 先叫超级?
  3. 如果需要重新启动应用程序,如何加载值 在某些时候
  4. 我是否应该更喜欢Multible Table Inheritence设置并使用数据库ID?这将是一个棘手的问题,因为这两个类中超过90%的字段是相同的。

1 个答案:

答案 0 :(得分:1)

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

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

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并将其显示给用户,我真的不确定它是不是线性的。