I have models:
class Course < ApplicationRecord
has_one :survey, as: :surveyable, dependent: :destroy
self.inheritance_column = "course_type"
class << self
def sti_name
key_enum = name.split(base_class.name).last.underscore
store_full_sti_class && store_full_class_name ? course_types[key_enum] : course_types[key_enum].demodulize
end
def sti_class_for type_name
super "Course#{type_name.classify}"
end
end
end
class CourseOffline < Course
end
class Survey < ApplicationRecord
belongs_to :surveyable, polymorphic: true, optional: true
end
when i use CourseOffline.last.survey or Course.last.survey (course_type is "Offline") then i got query:
CourseOffline Load (0.5ms) SELECT "courses".* FROM "courses" WHERE "courses"."course_type" = $1 AND "courses"."deleted_at" IS NULL ORDER BY "courses"."id" DESC LIMIT $2 [["course_type", 1], ["LIMIT", 1]]
Survey Load (0.3ms) SELECT "surveys".* FROM "surveys" WHERE "surveys"."deleted_at" IS NULL AND "surveys"."surveyable_id" = $1 AND "surveys"."surveyable_type" = $2 LIMIT $3 [["surveyable_id", 162], ["surveyable_type", "Course"], ["LIMIT", 1]]
my expect surveyable_type is "CourseOffline" not "Course"