2012-02-07 13 views

Odpowiedz

0

Będziesz chciał przeprowadzić badania na konwencji Railsowej zwanej "obawami". Oto podsumowanie: Utwórz podkatalog o nazwie obawy w katalogu aplikacji. Utwórz moduł w aplikacji/sprawach i dołącz moduł do wszystkich modeli. Dodaj ścieżkę do aplikacji/zagadnień do swojej ścieżki config.autoload_path w config/application.rb.

Zanim to zrobisz, jestem ciekawa, jaka metoda musiałaby być zawarta we WSZYSTKICH modelach? Ile modeli mówimy i jaki problem próbujesz rozwiązać?

+0

Jest to dane dla zdalnego serwera, a mianowicie serwera socket.io. Używam socket.io do aktualizacji w czasie rzeczywistym i muszę wysłać te aktualizacje z wielu modeli. – JRPete

+0

Nie sądzę, aby niepokój był właściwy. –

+0

Uzgodnione, Aroop. Myślę, że rozwiązanie musi być na wyższym poziomie. Nie jestem jednak wystarczająco zaznajomiony z socket.io. –

2

Istnieje wiele sposobów, w którym można zrobić osiągnięcia tego

  1. Używaj OOP i utworzyć klasę i SUB dla ActiveRecord :: Base w projekcie i używać tej klasy jako rodzic dla wszystkich modeli
  2. Monkey ścieżka ActiveRecord :: Base
  3. Utwórz moduł i to, że we wszystkich swoich modelach
9

Możesz napisać do wielokrotnego wykorzystania metody w module i obejmują w niezbędnych modeli.

utworzyć plik w lib/reusable.rb

module Reusable 
    def reusable_method_1 
    puts "reusable" 
    end 

    def reusable_method_2 
    puts "reusable" 
    end 
end 

Powiedzmy, jeśli chcesz korzystać z tego w modelu użytkownika

class User < ActiveRecord::Base 
    include Reusable 
end 

A także upewnić się, że autoload_path włączona w katalogu lib/application.rb

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

Widziałem wiele odpowiedzi na to pytanie i żadne z nich nie wspomniało o włączeniu lib w ścieżkach autoload_. +1 za to! rozwiązał mój problem –

3

Aktywne rozszerzenia rekordów podczas uruchamiania serwera

# 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 
Powiązane problemy