У меня полиморфные отношения, и я бы хотел, чтобы ребенок (полиморф?) Был полностью прозрачным. Настройка является общей:
class ScheduledEvent < ActiveRecord::Base
belongs_to :scheduleable, polymorphic:true
#has column names like #starts_at, #ends_at
end
class AppointmentTypeOne < ActiveRecord::Base
has_one :scheduled_event, :as=>:scheduleable, :dependent=>:destroy
end
class AppointmentTypeTwo < ActiveRecord::Base
has_one :scheduled_event, :as=>:scheduleable, :dependent=>:destroy
end
Я бы хотел иметь возможность трактовать AppointmentTypeOne
и AppointmentTypeTwo
так, как будто ОНИ имели столбцы таблицы #starts_at
и #ends_at
.
С точки зрения метода очень легко добавить #starts_at
, #starts_at=
и т. Д. В мои AppointmentX
классы и вернуться к ScheduledEvent
. Но как настроить так, чтобы отношения были прозрачными и для ActiveRelation
? Позвольте мне сделать что-то вроде:
AppointmentTypeOne.where('starts_at IS NOT NULL')
(без необходимости join
или include
:scheduled_event
)