Для повторного использования кода, мы используем модули. Более распространенное использование модулей в Rails заключается в совместном использовании общего кода. поэтому ответ
- написать один и тот же метод в модуле
- место его в Lib как
lib/some_token_generation.rb
module SomeTokenGeneration def generate_token(column) begin self[column] = SecureRandom.urlsafe_base64 end while User.exists?(column => self[column]) end end
- после этого включить этот модуль, в котором модель вы хотите для использования , как
models/some_model1.rb
class SomeModel1 include SomeTokenGeneration end
или models/some_model2.rb
class SomeModel2 include SomeTokenGeneration end
включаемой метод добавляет любые методы в модуле как методы экземпляра в классе
Давайте посмотрим на сценарий, в котором два класса может поделиться метод экземпляра.
Таким образом, вы можете использовать этот метод в обеих моделях, как models/some_model1.rb
class SomeModel1 include SomeTokenGeneration def some_method1 self.generate_token(column) end end
или models/some_model2.rb
class SomeModel2 include SomeTokenGeneration def some_method2 self.generate_token(column) end end
Озабоченность была бы соглашением по рельсам, где можно было бы поместить что-то вроде этого, если вы используете рельсы 4. 'self.class' должен работать нормально –