2012-02-07 15 views

Respuesta

0

Querrá investigar sobre una convención de Rails llamada "Preocupaciones". Aquí está la verdad: crear un subdirectorio llamado inquietudes en el directorio de tu aplicación. Cree su módulo en aplicaciones/inquietudes e incluya el módulo en todos sus modelos. Agregue la ruta a la aplicación/inquietudes a su config.autoload_path en config/application.rb.

Antes de hacer nada de eso, tengo curiosidad por saber qué tipo de método debería incluirse en TODOS los modelos. ¿De cuántos modelos estamos hablando y qué problema estás tratando de resolver?

+0

Es para datos a un servidor remoto, es decir, un servidor socket.io. Estoy usando socket.io para actualizaciones en tiempo real y necesito enviar esas actualizaciones desde varios modelos. – JRPete

+0

No creo que la preocupación sea la forma correcta –

+0

De acuerdo, Aroop. Creo que la solución debe estar en un nivel superior. Aunque no estoy lo suficientemente familiarizado con socket.io. –

2

Hay varias formas en las que podría no alcanzar este

  1. uso y programación orientada a objetos y crear una subclase de ActiveRecord :: Base en su proyecto y utilizar esa clase como un padre para todos sus modelos
  2. mono ruta ActiveRecord :: Base
  3. Crear un módulo y que incluye en todos sus modelos
9

puede escribir métodos reutilizables en un módulo de e incluir en los modelos necesarios.

crear un archivo en lib/reusable.rb

module Reusable 
    def reusable_method_1 
    puts "reusable" 
    end 

    def reusable_method_2 
    puts "reusable" 
    end 
end 

digamos que si usted desea utilizar este modelo de usuario en

class User < ActiveRecord::Base 
    include Reusable 
end 

Y también asegurarse de que el autoload_path habilitado lib/directorio application.rb

# Custom directories with classes and modules you want to be autoloadable. 
config.autoload_paths += %W(#{config.root}/lib) 
+0

Vi muchas respuestas a esta pregunta y ninguna mencionó incluir lib en autoload_paths. +1 por eso! resuelto mi problema –

3

Extensiones de registro activas durante el inicio del servidor

# 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 
Cuestiones relacionadas