2013-03-05 1 views
1

Модель:Elasticsearch отображение не включает в себя атрибуты из Rails ключ-значение магазина

class Item 
    store :socket_store, accessors: [:sockets, :socket_count, :socket_link_count] 
end 

Mapping:

mapping do 
    indexes :id,     key: "value", index: :not_analyzed 
    indexes :sockets,    type: "object" 
    indexes :socket_count,   type: "integer" 
    indexes :socket_link_count,  type: "integer" 
end 

Но вот что мой фактический показатель выглядит следующим образом:

socket_cout и 2 атрибута не находятся в корне отображение, как будто они были полностью проигнорированы.

Я знаю, что могу создавать методы с другим именем и добавлять их к to_indexed_json, но я бы предположил, что он должен работать так, как есть.

+0

Вы видите, что есть несоответствие имени? Не знаю, влияет ли это на что-то. 'linked_socket_count'! =' socket_link_count' – aledalgrande

+0

Ой, извините, я недавно переименовал это поле, но в то время это было правильно. Исправлен вопрос. – Robin

+0

@karmi любые идеи? : D – Robin

ответ

1

Хорошо, я понял.

Поскольку аксессоры магазина ключ-значение не фактические атрибуты на Item модели, они должны быть добавлены в качестве методов в методе to_indexed_json:

def to_indexed_json 
    to_json(include: [:stats], exclude: [:sockets_store], methods: [:socket_count, :socket_link_count, :sockets]) 
end 

И это все!