Где я должен поместить метод в Rails, который будет использоваться всеми моими моделями?
Рельсы, где можно использовать метод во всех моделях
Ответ 1
Вы можете писать повторно используемые методы в модуле и включать в необходимые модели.
создать файл в lib/reusable.rb
module Reusable
def reusable_method_1
puts "reusable"
end
def reusable_method_2
puts "reusable"
end
end
Давайте скажем, если вы хотите использовать его в пользовательской модели
class User < ActiveRecord::Base
include Reusable
end
А также убедитесь, что autoload_path включен для каталога lib/в application.rb
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
Ответ 2
Активные расширения записей во время запуска сервера
# config/initializers/core_extensions.rb
class ActiveRecord::Base
# write ur common base code here
def self.per_page
@@per_page ||= 10
end
def self.pagination(options)
paginate :per_page => options[:per_page] || per_page, :page => options[:page]
end
end
Ответ 3
Существует несколько способов достижения этой цели.
- Используйте OOP и создайте подкласс для ActiveRecord:: Base в своем проекте и используйте этот класс в качестве родителя для всех ваших моделей.
- Путь к обезьяне ActiveRecord:: Base
- Создайте модуль и включите его во все ваши модели.
Ответ 4
Вы захотите провести некоторое исследование по конвенции Rails под названием "Проблемы". Здесь низкая: Создать подкаталог, вызываемый проблемами в каталоге приложения. Создайте свой модуль в приложении/проблемах и включите модуль во все ваши модели. Добавьте путь к приложению/проблемам в свой config.autoload_path в config/application.rb.
Прежде чем делать что-либо из этого, мне любопытно, какой метод должен быть включен во ВСЕ модели? Сколько моделей мы говорим и какую проблему вы пытаетесь решить?