В приведенном примере он может вызвать uniquify
как метод, потому что он вызывает его внутри класса, который включает ActiveRecord::Base
.(Он звонит uniquify
внутри блока class Product < ActiveRecord::Base
... end
) Здесь нет никакой настоящей магии.
Насколько я понимаю, то, что вы желаете, легко достижимо, но не является хорошей идеей, считается "наилучшей практикой".Вы можете определить все, что вы хотите в своем драгоценном камне.Например, я мог бы упаковать файл с именем say_hello.rb
внутри гема с именем salutations
.
say_hello.rb
def say_hello
puts "Hello everybody"
end
Если мне понадобится упакованный камень salutations
, я получу доступ ко всему, что там определено.Однако это может привести к неожиданным последствиям.Делайте то, что вам нужно, но просто понимайте, что это может быть не самой лучшей идеей.Следовательно, вы встраиваете вещи в классы или модули, чтобы содержать их и предотвращать конфликты с другим кодом.Удачи.