2015-08-05 15 views
5

https://github.com/dockyard/postgres_ext-serializerspostgres_ext/serializzatori aiutano ... sembra così semplice, ma non si può ottenere nulla per funzionare come descritto

questo sembra così semplice da configurare, ma io non riesco a ottenere qualsiasi funzionalità di base per lavorare in termini di spostamento del JSON da binari a postgres. Ho provato a includere quanto segue nel mio init di ams, nei miei serializzatori specifici e nei miei modelli, ma non sembra mai attivarsi.

Sono on Rails 4.2.3 e Rubino 2.2

e questo è quello che ho provato ad aggiungere a più file:

richiedono 'postgres_ext/serializzatori'

Apprezzo davvero il tuo aiuto, so che mi manca qualcosa di ovvio.

Aggiornamento: Per dare un po 'di più contesto, leggere le istruzioni README.md per questo gioiello, si dice solo"

richiedono solo 'postgres_ext/serializzatori' e utilizzare ActiveModel :: ! serializzatori come si farebbe normalmente

Così ho aggiunto require 'postgres_ext/serializzatori' al mio application.rb, fatto un piccolo di modifica ad un serializzatore per vedere se ha funzionato:

class UserSerializer < ActiveModel::Serializer 

    cached false 

    attributes :id, :username, :location, :full_name 

    def full_name 
    "#{object.first_name} #{object.last_name}" 
    end 

    def full_name__sql 
    "first_name || ' ' || email" 
    end 

end 

Poi vorrei eseguire il seguente nella mia console Rails:

users = User.first(10) 
ActiveModel::ArraySerializer.new(users, each_serializer: UserSerializer).to_json 

Ma l'attributo nome completo __sql non è mai stato mostrato e non sembrava a tirare i dati da Postgres in modo diverso rispetto a prima.

E questo è quello che sembra il mio application.rb come:

# require 'postgres_ext/serializers' ### Doesn't work here 

require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

require 'postgres_ext/serializers' 

Bundler.require(*Rails.groups) 

module Baller 
    class Application < Rails::Application 
    # Do not swallow errors in after_commit/after_rollback callbacks. 
    config.active_record.raise_in_transactional_callbacks = true 

    # From: http://www.benfranklinlabs.com/where-to-put-rails-modules/ 
    # config.autoload_paths += %W(#{config.root}/lib) # add this line 
    config.autoload_paths += %W(#{config.root}/lib) 
    config.autoload_paths += Dir["#{config.root}/lib/**/"] 
    end 
end 

Grazie!

+0

Aggiungi messaggi di errore esatti alla tua domanda. Che cosa esattamente non funziona e come lo sai? – EugZol

+0

@EugZol ha appena aggiunto più dettagli al mio post. Grazie per aver guardato! – Hawk

risposta

2

Hai provato ad aggiungere questo require 'postgres_ext/serializers' nella parte superiore del tuo config/application.rb. Credo che questo debba essere richiesto prima di ogni altra cosa, quando cambia i driver di Postgres.

aggiornamento per rispondere alla tua aggiornamento:

def full_name__sql 
    "first_name || ' ' || email" 
end 

dovrebbe essere:

def self.full_name__sql 
"first_name || ' ' || email" 
end 

Dalla documentazione:

... chiamare con la ricerca di un metodo di classe con la stessa nome e il suffisso __sql ...

+0

Sì, ma ottengo un errore quando lo includo in cima: gems/active_model_serializers-0.8.0/lib/active_model_serializers.rb: 12: in ' ': costante non inizializzata Rails :: Railtie (NameError) Il primo nel file che posso includere è quindi funziona subito dopo: richiede 'rail/all' Apprezzo davvero qualsiasi aiuto su questo! – Hawk

+0

quindi non funziona quando lo includi dopo le rotaie/tutto? Penso che dopo quello dovrebbe essere il posto giusto di. –

+0

Quando lo includo dopo le rotaie/tutti i carichi della console senza errori, ma non funziona nel senso che postgres_ext/serializers non sembra essere attivato o connesso. – Hawk