我是rails的新手,我遇到了以下问题:
我需要一个持久的类变量(我认为)用于人类可读的客户ID。 customer类是Single Table Inheritance设置中的联系人类的子类,因此数据库生成的ID不是有用的,因为它不是线性升序。
我想我需要一个类变量或全局变量来实现一种计数器/ id(它不是count方法,因为客户可以被删除)。我对么?在这种情况下,类变量需要以某种方式保存到数据库,对吗?
我有点失落
我是否应该更喜欢Multible Table Inheritence设置并使用数据库ID?这将是一个棘手的问题,因为这两个类中超过90%的字段是相同的。
答案 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并将其显示给用户,我真的不确定它是不是线性的。