File tree Expand file tree Collapse file tree 4 files changed +13
-3
lines changed Expand file tree Collapse file tree 4 files changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -67,7 +67,8 @@ def resource_for_type(type)
6767 end
6868
6969 def resource_for_model ( model )
70- resource = children . find { |c | model . is_a? ( c . model ) }
70+ resource = children . find { |c | model . class == c . model } ||
71+ children . find { |c | model . is_a? ( c . model ) }
7172 if resource . nil?
7273 raise Errors ::PolymorphicResourceChildNotFound . new ( self , model : model )
7374 else
Original file line number Diff line number Diff line change @@ -36,6 +36,7 @@ def klasses
3636 teams : PORO ::Team ,
3737 paypals : PORO ::Paypal ,
3838 visas : PORO ::Visa ,
39+ gold_visas : PORO ::GoldVisa ,
3940 mastercards : PORO ::Mastercard ,
4041 visa_rewards : PORO ::VisaReward ,
4142 books : PORO ::Book ,
@@ -241,6 +242,9 @@ def initialize(*)
241242 end
242243 end
243244
245+ class GoldVisa < Visa
246+ end
247+
244248 class Mastercard < CreditCard
245249 end
246250
@@ -397,7 +401,7 @@ class BioResource < ApplicationResource
397401 end
398402
399403 class CreditCardResource < ApplicationResource
400- self . polymorphic = %w[ PORO::VisaResource PORO::MastercardResource ]
404+ self . polymorphic = %w[ PORO::VisaResource PORO::GoldVisaResource PORO:: MastercardResource]
401405
402406 def base_scope
403407 { type : [ :visas , :mastercards ] }
@@ -422,6 +426,9 @@ def base_scope
422426 has_many :visa_rewards
423427 end
424428
429+ class GoldVisaResource < VisaResource
430+ end
431+
425432 class MastercardResource < CreditCardResource
426433 attribute :description , :string do
427434 "mastercard description"
Original file line number Diff line number Diff line change 1414 it "returns the serializer of the child resource associated to the given model" do
1515 expect ( instance . serializer_for ( PORO ::Visa . new ) )
1616 . to eq ( PORO ::VisaResource . serializer )
17+ expect ( instance . serializer_for ( PORO ::GoldVisa . new ) )
18+ . to eq ( PORO ::GoldVisaResource . serializer )
1719 end
1820
1921 context "when a polymorphic child" do
Original file line number Diff line number Diff line change @@ -703,7 +703,7 @@ def self.name
703703 it "generates a polymorphic schema for the resource" do
704704 expect ( schema [ :resources ] [ 0 ] [ :polymorphic ] ) . to eq ( true )
705705 expect ( schema [ :resources ] [ 0 ] [ :children ] )
706- . to eq ( [ "PORO::VisaResource" , "PORO::MastercardResource" ] )
706+ . to eq ( [ "PORO::VisaResource" , "PORO::GoldVisaResource" , "PORO:: MastercardResource"] )
707707 end
708708 end
709709
You can’t perform that action at this time.
0 commit comments