我正在开发一个同行借贷应用程序,它有几种类型的用户(即借款人,贷方,赞助商等),它们具有不同的字段。而且,这些用户中的一些可以属于两件事(即,贷方也可以是赞助商)。那么,单表继承在这个实例中是个好主意吗?如果是这样,一个用户可以属于只有一个“类型”字段的两个组吗?如果STI不是要走的路,那么最好的方法是什么?毕竟,使用不同的表将需要将相同的信息保存到多个数据库,这似乎没有效率。
提前感谢您的帮助!!
答案 0 :(得分:1)
我认为可以安全地假设每个用户的角色由租赁/交易的类型决定。也就是说,如果我们有一个交易D1
和两个用户U1
和U2
,那么这笔交易就会定义U1
是赞助商还是借款人。
我建议将用户层次结构保留为STI并引入另一个类,例如DealUserRole (Deal, User, Role)
。
答案 1 :(得分:0)
您可以使用我一直在研究的宝石(CITIER) - http://peterhamilton.github.com/citier进行继承,仍在开发中,但目前运行正常。如果不同的类有很多独特的字段,那么比STI好多了。 STI会让他们留空。此外,MTI在以后的产品中更具可扩展性。我同意你还需要为用户介绍一个角色。但我认为使用它可以将它链接到父(User类),因此它将应用于用户的所有子类型。
class User < ActiveRecord::Base
has_many :roles
end
class Role < ActiveRecord::Base
acts_as_citier
has_many :users
end
class Borrower < Role
acts_as_citier
#Other borrower stuff
end
class Lender < Role
acts_as_citier
#Other lender stuff
end
等