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

时间:2013-11-03 20:45:44

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 associations elasticsearch

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

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

服务正在获得一个空数组。如果是通过协会,是否应该包含在专业人士中?

需要一些关于协会的帮助,以及正确的方式。

由于

1 个答案:

答案 0 :(得分: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