0

在我的一个模型中,我有这个

has_many :professionals
has_many :services, :through => :professionals

我正在尝试了解如何从服务中获取价值

我有列service,并且description在我的服务模型中。我正在使用弹性搜索,我想索引服务模型。

def service_name
  services.map(&:service)
end

我不确定映射是否正确,我应该使用以下方法获取 json:

def to_indexed_json
    to_json( 
      include: { 
        professionals: { 
          only: [:first_name, :last_name]
          },
        services: {
          only: [:service_name]
          }
        }  
      )
end

这就是我得到的

     "professionals": [
              {
                 "first_name": "Happy",
                 "last_name": "Gilmore"
              }
           ],
     "services": []

服务得到一个空数组。如果是直通关联,是否应该包含在专业人员中?

通过协会需要一些帮助,什么是正确的方法。

谢谢

4

1 回答 1

0

使用:methods参数将 ActiveRecord 包含instance methods到 JSON 输出中。:only:except使用DB columns only.

参考:http ://apidock.com/rails/ActiveRecord/Serialization/to_json

尝试这个:

def to_indexed_json
  to_json(
    methods: [:service_name],
    include: { 
      professionals: { only: [:first_name, :last_name] }
    }
  )
end

和#service_name 应该是这样的:

def service_name
  services.pluck(:service)
end
于 2013-11-04T12:40:28.003 回答