我试图在我的Rails应用程序中实现STI模式,我会变得疯狂。
我有三种模式:
超类:
class Reservation < ActiveRecord::Base
self.inheritance_column = :inheritance_type
#some code here
end
子类:
class ApartmentReservation < Reservation
#some code here
end
class StorageReservation < Reservation
#some code here
end
我想获得一个Subclass实例,调用Superclass,例如
Reservation.all
应返回ApartmentReservation和StorageReservation的集合,但它会返回Reservation的集合。
我一直在寻找答案,我发现它是因为开发环境中的负载急剧。根据建议,我一直在尝试使用这些代码部分:
在初始化程序中:
Rails.configuration.to_prepare do
require_dependency 'app/models/apartment_reservation'
require_dependency 'app/models/storage_reservation'
end
在超类中:
def self.descendants
[ApartmentReservation, StorageReservation]
end
在超类的底部:
require_dependency 'app/models/apartment_reservation'
require_dependency 'app/models/storage_reservation'
但它仍然无效。
有没有人知道,如何让它发挥作用?
这涉及rails server
,但在rails console
中,一切正常。
答案 0 :(得分:0)
我找到了问题的根源。我在Superclass中有两个类方法,它们影响了STI行为。移除/移动这些方法后,转换工作正常。有谁有任何想法,为什么?
这些方法:
.tablesorter {
margin: -5px 0 0 0;
table-layout: fixed;
}
.tablesorter td{
margin: 0;
padding: 0;
border-bottom: 1px dotted #ccc;
}
.tablesorter thead tr {
height: 34px;
color:#082B33;;
background:#B5E5EF;
text-align: left;
cursor: pointer;
}