在我的一个模特中,我有这个
has_many :professionals
has_many :services, :through => :professionals
我正试着看看我如何从服务中获取价值
我的服务模型中有service
和description
列。我正在使用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": []
服务正在获得一个空数组。如果是通过协会,是否应该包含在专业人士中?
需要一些关于协会的帮助,以及正确的方式。
由于
答案 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