我已经用头撞了一天多了,所以我们走吧:
我有一个用户模型。但是有3种类型的用户(实际上更多,但让我们完成这个任务)。假设有人才、经理和董事。但他们都是使用者。一个经理有很多才能,人才有一个经理。经理有很多经理,经理有一位董事。人才有一位主管,通过经理。
显然,有三个单独的模型,这将是微不足道的。但它们都是用户,因此有必要将它们保留在用户模型中。
做这件事最简单的方法是什么?如果我要用宝石,那就去吧,但我不想.
谢谢!
发布于 2018-08-17 09:11:55
单表继承最适合您的问题描述:
单表继承活动记录允许继承,方法是将类名存储在默认名为“type”的列中(可以通过覆盖
Base.inheritance_column更改)。这意味着继承如下所示:class Company < ActiveRecord::Base; endclass Firm < Company; endclass Client < Company; endclass PriorityClient < Client; end当您执行Firm.create(name: "37signals")时,此记录将被保存在类型为=“companies”的companies表中。然后,您可以使用Company.where(name: '37signals').first再次获取该行,它将返回一个确定的对象。 请注意,因为类型列是记录上的属性,因此每个新子类都会立即被标记为脏,并且类型列将包括在记录上更改的属性列表中。这与非单一表继承(STI)类不同:Company.new.changed? # => falseFirm.new.changed? # => true如果没有在表中定义类型列,则不会触发单表继承。在这种情况下,它将像普通子类一样工作,没有特殊的魔力来区分它们或用find重新加载正确的类型。
https://stackoverflow.com/questions/51891160
复制相似问题