Inheritance 模型继承&x2013;使用';其中';取决于属性

Inheritance 模型继承&x2013;使用';其中';取决于属性,inheritance,activerecord,ruby-on-rails-3.2,rails-models,Inheritance,Activerecord,Ruby On Rails 3.2,Rails Models,我有一个用户模型和一个经销商和客户模型,它们继承了用户类,没有自己的数据库表: class User < ActiveRecord::Base end class Dealer < User before_save :set_default_values def set_default_values self.role_id = Role.find_by_handle('dealer').id end end class Customer < User

我有一个用户模型和一个经销商和客户模型,它们继承了用户类,没有自己的数据库表:

class User < ActiveRecord::Base
end

class Dealer < User
  before_save :set_default_values

  def set_default_values
    self.role_id = Role.find_by_handle('dealer').id
  end
end

class Customer < User
    …
end
class用户
我不使用作用域,因为我需要类似于经销商路径的东西和每个角色的一些自定义逻辑

现在我想知道如何告诉我的经销商/客户模型它是角色相关的,这样我就可以使用(例如)customer.all,只需使用“customer”角色就可以获得用户


有人能给我指出正确的方向吗?

你可以使用Rails的内置功能。只需向用户添加一个名为“type”的列,并将该值设置为“dealer”、“customer”等。

您不能将默认范围应用于新类吗

class Dealer < User
  default_scope { where(:role_id) = Role.find_by_handle('dealer').id }
  ...
end
class经销商
Hmm是的,但是我有一个角色模型,并将用户的角色存储为role\u id。因此我需要类似于STI的东西,role\u id:integer,而不是type:string。