mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
fb86ecd604
This is an alternative of #31877 to fix #31876 caused by #28808. This issue was caused by a combination of several loose implementation. * finding automatic inverse association of polymorphic without context (caused by #28808) * returning `klass` even if `polymorphic?` (exists before #28808) * loose verification by `valid_inverse_reflection?` (exists before #28808) This makes `klass` raise if `polymorphic?` not to be misused. This issue will not happen unless polymorphic `klass` is misused. Fixes #31876. Closes #31877.
16 lines
716 B
Ruby
16 lines
716 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Man < ActiveRecord::Base
|
|
has_one :face, inverse_of: :man
|
|
has_one :polymorphic_face, class_name: "Face", as: :polymorphic_man, inverse_of: :polymorphic_man
|
|
has_one :polymorphic_face_without_inverse, class_name: "Face", as: :poly_man_without_inverse
|
|
has_many :interests, inverse_of: :man
|
|
has_many :polymorphic_interests, class_name: "Interest", as: :polymorphic_man, inverse_of: :polymorphic_man
|
|
# These are "broken" inverse_of associations for the purposes of testing
|
|
has_one :dirty_face, class_name: "Face", inverse_of: :dirty_man
|
|
has_many :secret_interests, class_name: "Interest", inverse_of: :secret_man
|
|
has_one :mixed_case_monkey
|
|
end
|
|
|
|
class Human < Man
|
|
end
|