Рельсы, где можно использовать метод во всех моделях

Где я должен поместить метод в 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.

Прежде чем делать что-либо из этого, мне любопытно, какой метод должен быть включен во ВСЕ модели? Сколько моделей мы говорим и какую проблему вы пытаетесь решить?