2012-02-07 7 views

risposta

0

Avrai voglia di fare qualche ricerca su una convenzione di Rails chiamata "Preoccupazioni". Ecco il punto debole: crea una sottodirectory chiamata preoccupazioni nella tua directory app. Crea il tuo modulo in app/preoccupazioni e includi il modulo in tutti i tuoi modelli. Aggiungi il percorso per app/preoccupazioni al tuo config.autoload_path in config/application.rb.

Prima di fare qualsiasi cosa, sono curioso di sapere quale tipo di metodo dovrebbe essere incluso in TUTTI i modelli? Quanti modelli stiamo parlando e quale problema stai cercando di risolvere?

+0

È per i dati su un server remoto, vale a dire un server socket.io. Sto usando socket.io per gli aggiornamenti in tempo reale e ho bisogno di inviare quegli aggiornamenti da più modelli. – JRPete

+0

Non credo che la preoccupazione sia il modo giusto –

+0

Concordato, Aroop. Penso che la soluzione debba essere ad un livello più alto. Non sono abbastanza familiare con socket.io, però. –

2

Ci sono diversi modi in cui si potrebbe fare raggiungere questo

  1. Usa OOP e e creare una classe di sub per ActiveRecord :: Base nel progetto e l'uso che classe come un genitore per tutti i vostri modelli
  2. scimmia percorso ActiveRecord :: Base
  3. Creare un modulo e comprendono che in tutti i vostri modelli
9

È possibile scrivere i metodi riutilizzabili in un modulo e includere nei modelli necessari.

creare un file in lib/reusable.rb

module Reusable 
    def reusable_method_1 
    puts "reusable" 
    end 

    def reusable_method_2 
    puts "reusable" 
    end 
end 

Diciamo che se si desidera utilizzare questo modello di utente

class User < ActiveRecord::Base 
    include Reusable 
end 

E anche assicurare che l'autoload_path abilitato per lib/a application.rb

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

Ho visto molte risposte a questa domanda e nessuno di loro ha menzionato l'inclusione di lib in autoload_paths. +1 per quello! risolto il mio problema –

3

Estensioni record attive durante l'avvio del server

# 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