https://github.com/dockyard/postgres_ext-serializers
это кажется таким простым в настройке, но я не могу заставить работать какие-либо базовые функции с точки зрения перемещения JSON с рельсов на postgres. Я попытался включить следующее в мой ams init, в мои конкретные сериализаторы и в мои модели, но, похоже, он никогда не активируется.
Я использую Rails 4.2.3 и Ruby 2.2.
и это то, что я пытался добавить в несколько файлов:
требуется 'postgres_ext/serializers'
Очень ценю вашу помощь, я знаю, что должен упустить что-то очевидное.
Обновление: чтобы дать немного больше контекста, если вы читаете инструкции README.md для этого драгоценного камня, там просто написано "
Просто требуйте 'postgres_ext/serializers' и используйте ActiveModel::Serializers как обычно!
Поэтому я добавил require 'postgres_ext/serializers' в свой application.rb, внес небольшое редактирование в сериализатор, чтобы проверить, работает ли он:
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
Затем я запускал в консоли Rails следующее:
users = User.first(10)
ActiveModel::ArraySerializer.new(users, each_serializer: UserSerializer).to_json
Но атрибут полного имени __sql никогда не отображался, и, похоже, он не извлекал данные из postgres иначе, чем раньше.
А вот как выглядит мой application.rb:
# 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
Спасибо!