-
Notifications
You must be signed in to change notification settings - Fork 64
Closed
Description
I have this Course
model which has has_many: quality_badges
relation but the actual class is named CharacterQualityBadge
class Course < ApplicationRecord
...
has_many :course_quality_badges
has_many :quality_badges, class_name: 'CharacterQualityBadge',
foreign_key: :character_quality_badge_id,
through: :course_quality_badges,
dependent: :destroy
...
end
In the controller I cannot do
# courses_controller.rb
render jsonapi: @course,
include: [
:course_locales, :course_schedules, :competency,
:quality_badges, :competency_badges
]
# serializable_course.rb
attributes :name, ....
...
has_many :quality_badges
It'll throw undefined method new' for nil:NilClass
because there is no QualityBadge
model class.
I need to add an alias method in the Model and use it in the serializable class in order to make it work. ( so: quality_badge -> character_quality_badge)
# course.rb
class Course < ApplicationRecord
...
has_many :course_quality_badges
has_many :quality_badges, class_name: 'CharacterQualityBadge',
foreign_key: :character_quality_badge_id,
through: :course_quality_badges,
dependent: :destroy
# This does not look so good to me.
def character_quality_badges
quality_badges
end
...
end
# course_controller.rb
render jsonapi: @course,
include: [
:course_locales, :course_schedules, :competency,
:character_quality_badges, :competency_badges
]
# serializable_course.rb
attributes :name, ....
...
has_many :character_quality_badges
It'd be great if I can specify the mapping of the class name inside linkage
method or any other proper place like what you guys did for mapping resource with it serializer class.
render jsonapi: post, class: { Post: SerializableCustomPost }
Metadata
Metadata
Assignees
Labels
No labels