繁体   English   中英

如何通过方法中的关联值获取?

[英]how to get :through association values in a method?

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

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

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

我的服务模型中有列servicedescription 我正在使用Elasticsearch,并且想为服务模型建立索引。

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": []

服务得到一个空数组。 如果是直通协会,是否应将其封闭在专业人员内部?

需要一些通过协会的帮助以及正确的方法。

谢谢

使用:methods参数可将ActiveRecord instance methods包括在JSON输出中。 :only:except DB columns only使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM