mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
0409ed57ac
As of Ruby 2.7 DidYouMean is included as a default gem, so there is no need to check if DidYouMean is defined in the test suite. We still need to check if the DidYouMean modules are defined in the actual code, as someone might run Rails with DidYouMean disabled by using the `--disable-did_you_mean` flag. This is ussually done for performance reasons. This commit also includes some of the changes made by Yuki in: https://github.com/rails/rails/pull/39555 These changes include replacing Jaro with the more accurate SpellChecker, and using DidYouMean::Correctable for simplere corrections. The DidYouMean::SpellChecker does have a treshold for corrections. If there is not enough similarity it might not return a suggestion. To stop the tests from failing some test data had to be changed. For example, `non_existent` does not meet the treshold for `hello`, but `ello` does: DidYouMean::SpellChecker.new(dictionary: %w[hello]).correct('non_existent') => [] DidYouMean::SpellChecker.new(dictionary: %w[hello]).correct('ello') => ["hello"] The treshold makes sense for spelling errors. But maybe we should add a different SpellChecker that helps to get a suggestion even if there is little overlap. For example for when a model only has 2 attributes (title and body), it's helpful to get a suggestion for `name` Co-Authored-By: Yuki Nishijima <yk.nishijima@gmail.com>
17 lines
767 B
Ruby
17 lines
767 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Face < ActiveRecord::Base
|
|
belongs_to :human, inverse_of: :face
|
|
belongs_to :autosave_human, class_name: "Human", foreign_key: :human_id, inverse_of: :autosave_face
|
|
belongs_to :super_human, polymorphic: true
|
|
belongs_to :polymorphic_human, polymorphic: true, inverse_of: :polymorphic_face
|
|
# Oracle identifier length is limited to 30 bytes or less, `polymorphic` renamed `poly`
|
|
belongs_to :poly_human_without_inverse, polymorphic: true
|
|
# These are "broken" inverse_of associations for the purposes of testing
|
|
belongs_to :confused_human, class_name: "Human", inverse_of: :cnffused_face
|
|
belongs_to :puzzled_polymorphic_human, polymorphic: true, inverse_of: :puzzled_polymorphic_face
|
|
|
|
validate do
|
|
human
|
|
end
|
|
end
|