多表继承 Rails 和 activerecord

use*_*643 5 activerecord class-table-inheritance ruby-on-rails-3

我正在尝试使用 ActiveRecord 实现多表继承。看起来所有可用的宝石都很旧。我错过了什么吗?是否有任何“本机”方式可以使用 activerecord 来实现这一点?我正在使用 Rails 3.2.3 和 activerecord 3.2.1

mon*_*ike 1

单表继承(每辆汽车和卡车共享一个数据库)

class Vehicle < ActiveRecord
end

class Car < Vehicle
end

class Truck < Vehicle
end
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您不是共享数据库而是共享功能。然后您应该编写一个模块并将其包含在每个模型中

class Car < ActiveRecord
  extend VehicleFinders
end

class Truck < ActiveRecord
  extend VehicleFinders
end

module VehicleFinders
  def find_purchased
    #...
  end
end
Run Code Online (Sandbox Code Playgroud)

因此,在extend模块的方法中是调用类的类方法。include模块的方法是调用类的对象的实例方法

这对您来说可能是一本好书http://raysrashmi.com/2012/05/05/enhance-rails-models