2016-09-28 2 views
0

Я настроил Elasticsearch в моем API-интерфейсе Rails и для модели Post, он работает правильно, и я использую @post.destroy! чтобы удалить конкретную запись без каких-либо проблем, но когда я пытаюсь сделать то же самое с помощью панели действий Activeadmin, уничтожаю действие (я попытался выполнить действие по умолчанию, уничтожить действие и пользовательский контроллер -> уничтожить действие), здесь происходит то, что происходит правильно удаление записи из db, но после удаление он бросает исключение:Activeadmin Destroy Record with Exception Elasticsearch :: Transport :: Transport :: Errors :: NotFound in Admin [404]

Elasticsearch::Transport::Transport::Errors::NotFound in Admin::PostsController#destroy 

[404] {"found":false,"_index":"posts","_type":"post","_id":"1802","_version":1,"_shards":{"total":2,"successful":1,"failed":0}} 

ответ

0

Я пробовал все пользовательские функции обратного вызова, которые упомянуты в elasticsearch-model documentation, но только одно решение, которое я нашел, - это использовать заявление begin .. rescue:

@deleted = false 
begin 
    @post.destroy! 
rescue 
    Post.find_by(:id => id).present? ? @deleted = false : @deleted = true 
    #delete successful action here if @deleted == true 
end 
Смежные вопросы