Ruby on rails postgres_分机/序列化程序帮助。。。看起来很简单,但可以';I don’我没有按描述的那样做

Ruby on rails postgres_分机/序列化程序帮助。。。看起来很简单,但可以';I don’我没有按描述的那样做,ruby-on-rails,ruby-on-rails-4,activemodel,serialization,Ruby On Rails,Ruby On Rails 4,Activemodel,Serialization,这似乎很容易设置,但我似乎无法获得任何基本功能来将JSON从rails移动到postgres。我尝试在ams init、特定序列化程序和模型中包含以下内容,但它似乎从未激活 我使用的是Rails 4.2.3和Ruby 2.2 这就是我尝试添加到多个文件中的内容: 需要“postgres\u ext/serializer” 非常感谢你的帮助,我知道我肯定错过了一些明显的东西 更新:为了提供更多的上下文,如果您阅读了此gem的README.md说明,它只会说“ 只需要“postgres_ext/se

这似乎很容易设置,但我似乎无法获得任何基本功能来将JSON从rails移动到postgres。我尝试在ams init、特定序列化程序和模型中包含以下内容,但它似乎从未激活

我使用的是Rails 4.2.3和Ruby 2.2

这就是我尝试添加到多个文件中的内容:

需要“postgres\u ext/serializer”

非常感谢你的帮助,我知道我肯定错过了一些明显的东西

更新:为了提供更多的上下文,如果您阅读了此gem的README.md说明,它只会说“

只需要“postgres_ext/serializer”并使用 ActiveModel::序列化程序与您通常使用的一样

因此,我将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
但是_usql full name属性从未显示,它从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
#需要'postgres_ext/serializers'####在这里不起作用
需要文件。展开\u路径(“../boot”,\u文件\u)
需要“rails/all”
需要“postgres\u ext/serializer”
Bundler.require(*Rails.groups)
模块芭蕾舞者
类应用程序

谢谢!

您是否尝试过将此
require'postgres\u ext/serializers'
添加到
config/application.rb
的顶部。我想在更改postgres驱动程序时,这是必须的

更新以回答您的更新:

def full_name__sql
  "first_name || ' ' || email"
end
应该是:

def self.full_name__sql
 "first_name || ' ' || email"
end
从文档中:

…通过查找具有相同名称和 后缀\uuu sql


请在你的问题中添加准确的错误消息。什么不起作用,你怎么知道的?@EugZol刚刚在我的帖子中添加了更多的细节。谢谢你的关注!是的,但是当我将它放在最顶端时,我发现了一个错误:gems/active\u model\u serializers-0.8.0/lib/active\u model\u serializers.rb:12:in`:未初始化的常量Rails::Railtie(NameError)在文件中,我最早可以在rails/all之后包含它,这样它就可以正常工作了:require'rails/all'真的很感谢您在这方面的帮助!那么,当您在rails/all之后包含它时,它不起作用吗?我认为在这之后应该是正确的位置。当我在rails/所有控制台加载之后包含它时,没有错误,但从某种意义上说,它不起作用stgres\u ext/serializer似乎未被激活或连接。请阅读我更新的帖子。该方法应该是类方法。该类方法不是问题,因为我尝试了两种方法…结果表明,被序列化的变量的类型应该是ActiveRecord::Relation…并且因为users=User.first(10)返回一个用户对象数组,而不是ActiveRecord::Relation,它不会触发代码。因此,我将测试更改为使用User.where(“id>100”).limit(10),它似乎正在尝试工作,但现在我收到一个新错误“错误的参数数”…如果我无法解决,我将打开一个新的SE帖子。感谢帮助!
def self.full_name__sql
 "first_name || ' ' || email"
end